PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > ThinkPhp教程 > 正文

    thinphp3.2.3讲解(三)——空操作、空控制器、跨控制器、命名空间

    作者:admin来源:cnblogs浏览:时间:2020-09-30 00:07:50我要评论
    导读:一、空操作本质意思:一个对象(控制器)调用本身不存在的操作方法一般网站处于安全考虑不给用户提示任何错误信息在tp里面控制器controller.c...
    一、“空操作”本质意思:一个对象(控制器)调用本身不存在的操作方法

    一般网站处于安全考虑不给用户提示任何错误信息

    在tp里面控制器controller.class.php里有个_call()方法

    thinphp3.2.3讲解(三)——空操作、空控制器、跨控制器、命名空间

    所以空操作有两种解决方案:

    ①     在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法。(推荐使用)

    1. function _empty()  //解决方案一 
    2.     { 
    3.         echo "网页不存在,请检查浏览器信息!"
    4.     } 
    ②     给空操作的名称制作一个同名的模板出来,系统会自动调用

    二、空控制器是指没有找到指定的类

      ThinkPHP/Library/Think/App.class.php  框架应用文件

    在App.class.php内部包括控制器对象创建,以及对象调用指定的方法呈现内容:

    thinphp3.2.3讲解(三)——空操作、空控制器、跨控制器、命名空间

    空控制器处理方案:可以再制作一个控制器,名称EmptyController.class.php

    在该控制器内部其实只需要制作一个_empty()方法即可。

    thinphp3.2.3讲解(三)——空操作、空控制器、跨控制器、命名空间

    三、跨控制器调用

    1.跨控制器(在同一模块下)调用操作方法

       例:在MainController.class.php的ShuChu()操作方法里调用IndexController.class.php里的shuchu()方法

    1. <?php 
    2. namespace Home\Controller; 
    3. use Think\Controller; 
    4.   
    5. class MainController extends Controller 
    6.          function ShuChu()  
    7.     { 
    8.         //跨控制器(在同一模块下)调用操作方法 
    9.         //方式一:造对象 
    10.         //$index=new IndexController(); 
    11.         //echo $index->ShuChu(); 
    12.           
    13.         //方式二:使用A方法来造对象 
    14.         //$index=A("Index");  //A括号里的参数是  A([模块/]控制器标志) 
    15.         //echo $index->ShuChu(); 
    16.           
    17.         //方式三:使用R方法:造对象并且调用某个特定方法 R([模块/]控制器标志/操作方法) 
    18.         //echo R("Index/ShuChu");  
    19.          } 
    2.跨模块调用操作方法
    例:在MainController.class.php的ShuChu()操作方法里调用Admin模块下TestController.class.php里的Test()方法  

    1. <?php 
    2. namespace Home\Controller; 
    3. use Think\Controller; 
    4.   
    5. class MainController extends Controller 
    6.        function ShuChu()\ 
    7.        { 
    8.                 //跨模块调用 
    9.         //A方法 
    10.         //$test=A("Admin/Test"); 
    11.         //echo $test->Test(); 
    12.           
    13.         //R方法 
    14.         //echo R("Admin/Test/Test"); 
    15.        } 
    四、命名空间

    相当于一个虚拟的目录

    正常管理文件使用文件夹--物理区分


    TP框架的初始命名空间是:ThinkPHP\Library

    在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\Library)

    1.系统目录下根命名空间是ThinkPHP\Library下面的文件夹名称命名的

    2.模块的根命名空间是以模块名命名的

    在定义命名空间的时候需要从根写起例如:Home\Controller 例如:Think\Model


    如果要使用某个类文件,引入该类命名空间的时候:
    使用use关键字,后面写该类的命名空间 后面加上 "\文件名"

    如果不想引入命名空间:在造类的对象的时候可以使用\(初始命名空间)来找到对应的类
    例如:new \Think\Page(30);
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-83-5033-1.html
    相关热词搜索: