thinkphp框架錯誤提示及命名空間使用方法

1、thinkphp是經過訪問操做方法來訪問頁面的,若是出現不存在的方法就會報錯,爲了使用戶有更好的體驗,咱們就要是報錯的頁面簡單易懂,先看一下頁面原先的報錯:php

這樣的報錯若是不是程序員的話就會看不懂,因此咱們要將這樣的報錯改爲用戶可以清晰明白的方式,其實很簡單,只需加一個方法就能夠了:程序員

namespace Home\Controller;
use Think\Controller;
class MainController extends Controller{

    public function _empty(){
        echo "您訪問的頁面不存在";
    } 
}

這樣再次訪問不存在操做方法的頁面時就會提示用戶您訪問的頁面不存在:sql

固然若是是控制器不存在的話,也是同樣,不過要在controller文件內新建一個EmptyController.class.php文件:thinkphp

<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
    public function _empty(){
        echo "您訪問的控制器不存在";
    }
}

這樣就能夠提示您訪問的控制器不存在了。數據庫

2、thinkphp有一個很是重要並且特別的地方,就是它須要使用命名空間,也就是namespace,命名空間至關因而一種虛擬目錄,它有以下特色:json

命名空間:至關於虛擬目錄
目的:是爲了自動加載類數組

一、初始命名空間:Library
二、根命名空間:
第一部分:Library下面的全部文件夾
第二部分:應用程序模塊名

三、TP框架下全部類都要寫命名空間
寫命名空間怎麼寫:
從根開始寫,寫到該文件所在的目錄爲止。

四、用命名空間怎麼用:use
從根開始寫,寫到類名爲止。

五、不適用use的狀況下怎麼使用命名空間:
從初始命名空間開始找,到類名爲止。
new \Home\libs\DBDA();
框架

下面具體說明一下命名空間的使用:fetch

咱們在Home文件夾下的controller文件夾內新建一個MainController.class.php的文件,那麼它的命名空間就要這麼寫:ui

namespace Home\Controller;//Home是根文件夾,Controller是該文件所在文件夾
use Think\Controller;//ThINK是根文件夾,Controller是該文件所在文件夾

咱們在命名空間的一個操做方法下還能夠調用其它的操做方法:

<?php
namespace Admin\Controller;
use Think\Controller;
class MainController extends Controller{
    public function index(){
        echo "歡迎使用Thinkphp";
    }
    public function test(){
        $this->index();//調用該控制器下的操做方法
        //跨控制器調用
        $l = A("Login");//建立控制器對象
        $l->login();
        //跨模塊調用
        $m = A("Home/Main");
        $m->mains();
    }
}

輸出結果:

還能夠調用第三方類,固然要將第三方類放在根目錄下,咱們在Application下新建一個文件夾libs,而後將第三方類DBDA.class.php複製過來,並加上命名空間:

<?php
namespace Home\    libs;
class DBDA
{
    public $host="localhost";
    public $uid="root";
    public $pwd="123";
    public $dbname="text_0306";

//執行sql語句,返回相應結果
//sql要執行的sql語句
//$type表明sql語句的類型,0表明增刪改,1表明查詢
function query($sql,$type=1)
{
    $db=new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    $result=$db->query($sql);
    if($type)
    {
        //若是是查詢,返回數組
        return $result->fetch_all();    
    }
    else
    {
        //若是是增刪改,返回true或false
        return $result;    
        }
    }

//返回字符串
    public function strquery($sql)
    {
    $db=new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
    $result=$db->query($sql);
    $arr=$result->fetch_all();
    $str="";
    foreach($arr as $v)
    {
        $str=$str.implode("^",$v)."|";
    }
        $str=substr($str,0,strlen($str)-1);
        return $str;
    }
    
    //返回JSON
    function jsonquery($sql,$type=1)
    {
        $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname);
        $r = $db->query($sql);
        
        if($type==1)
        {
            return json_encode($r->fetch_all(MYSQLI_ASSOC));//將數組編碼成json
        }
        else
        {
            return $r;
        }
    }
}

?>

而後咱們調用這個類:

namespace Home\Controller;//Home是根文件夾,Controller是該文件所在文件夾
use Think\Controller;//ThINK是根文件夾,Controller是該文件所在文件夾
class MainController extends Controller{
    public function mains(){
        //echo "main";
        $db = new\Home\libs\DBDA();
        echo $db->dbname;
    }
}

這樣就輸出了數據庫名:test。

相關文章
相關標籤/搜索