zoukankan      html  css  js  c++  java
  • TP框架 ---空控制器和空操作

    通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建!


    【视图模板文件创建】

    视图模板文件存放发位置在:

    里面没有模板文件

    如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器:

    然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法:

    在login.html里面写入要显示的代码:

    然后再次请求:

    【url地址大小写设置】

    默认是不敏感的:

    在config.php里边对url大小写敏感进行设置

     

    【空操作和空控制器处理】

    空操作:没有指定的操作方法

    空控制器:没有指定控制器

    http://网址/index.php/Home/User/login

    http://网址/index.php/Home/User/hello 空操作

    http://网址/index.php/Home/beijing/login   空控制器

     

    空操作:

    一般网站处于安全考虑不给用户提示任何错误信息,空控制器:(为了防止对我们的网站进行攻击,看不出用什么做的网站)

    “空操作”本质意思:一个对象(控制器)调用本身不存在的方法(空操作就是访问了原来的控制器里没有的操作)

    在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:function __call();

     

    在tp里面控制器的父类:

    父类中有个方法:__call()

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

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

    ② 给空操作的名称制作一个同名的模板出来,系统会自动调用

    空控制器:(等于访问了一个没有的类)

     

     

    空控制器:在实例化控制器对象的时候,没有找到指定的类

    什么时候实例化控制器对象:ThinkPHP/Library/Think/App.class.php

    熟记文件:

    index.php  入口文件

    ThinkPHP/ThinkPHP.php  框架核心文件

    ThinkPHP/Library/Think/Think.class.php  框架核心文件

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

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

     

    A()方法是个快捷的方法 用来造对象的

     

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

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

    这样再次请求:

    【项目分组】

    系统有前台用户操作界面

    系统还有后台供公司内部人员使用维护平台、Home文件夹代表前台应用、admin代表后台应用

    两者在使用的过程中就是对“控制器”、“视图模板”、“model模型”的操作

     

    为了系统开发方便,及代码部署更加合理,我们的控制器、view视图等前后台文件不要混在起,要在物理结构上给分开

    http://网址/index.php/Home/控制器/操作方法     访问Home控制器及制定操作

    http://网址/index.php/Admin/控制器/操作方法    访问Admin分组的控制器和操作方法

     

    Home文件夹代表前台应用

    空操作实际上就是访问了原来的控制器里没有的操作,去操作调用的话,会自动调用这个方法 __call() 这个方法在父类里可以找到 

    //空方法

    举例:

    public function _empty()
    {
      echo "滚犊子,别乱访问";
    }

    访问空控制器,相当于访问一个没有的类

    thinkPHP/Librarary/Think/App.class.php ->App.class.php 框架应用文件,在这个文件里,它会自动的把控制器的对象创建出来,创建的时候调用了一个A方法,这个是tp模板提供的一个快捷方法,用来快速造对象。A('类名') 

    创建控制器实例的时候,如果发现没有这个类,会自动判断是否定义了empty控制器

    对空控制器的处理方法:做一个EmptyController.class.php控制器里写_empty()空方法
    项目分组 根据模块来分前台后台的模块同属一个项目文件夹内,但是互不影响

     

    》》输出的文字如果有乱码,可以在代码中加上:header("Content-Type:text/html; charset=utf-8");

    访问空方法解决办法->在控制器里面创建 _empty 方法

    复制代码
    <?php
    namespace HomeController;
    use ThinkController;
    class IndexController extends Controller 
    {
        public function _empty()
        {
            echo"网址输入错误";     //空方法的处理办法
        }
    }
    复制代码

    访问控控制器解决方法->创建一个名为EmptyController.class.php的控制器文件,在该控制器下创建一个 _empty 方法

    复制代码
    <?php
    namespace HomeController;
    use ThinkController;
    class EmptyController extends Controller 
    {
        public function _empty()
        {
            echo"网页不存在,请检查网址是否正确";     //空方法的处理办法
        }
    }
    复制代码

    跨控制器调用方法

    1,   加载类的方法  $class=new class;      $class->function;

    2,   A方法             $class=A("控制器");   $class->function;

    3,   R方法             R("控制器/方法");

    跨模块调用方法

    1,   A方法             $class=A("模块/控制器");   $class->function;

    2,   R方法             R("模块/控制器/方法");

    命名空间相关知识点

     

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

     

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

     

    在定义命名空间的时候需要从根写起例如:HomeController 例如:ThinkModel

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

    如果不想引入命名空间:在造类的对象的时候可以使用(初始命名空间)来找到对应的类

    例如:new ThinkPage(30);

  • 相关阅读:
    自定义key解决zabbix端口监听取值不准确的问题
    Redis——主从同步原理
    Leetcode 24——Swap Nodes in Pairs
    Struts2——第一个helloworld页面
    Leetcode 15——3Sum
    Leetcode 27——Remove Element
    C#简单入门
    Leetcode 12——Integer to Roman
    Leetcode 6——ZigZag Conversion
    eclipse如何debug调试jdk源码(任何源码)并显示局部变量
  • 原文地址:https://www.cnblogs.com/hanqishihu/p/5717036.html
Copyright © 2011-2022 走看看