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。

相关文章
相关标签/搜索