Module(空模块空操作前置后置操作)

module是一个类
名称:ModuleAction extends Action{} 首字母必须大写
同时,在请求Url的时候,也需要严格区分大小写
在APP_DEBUG,window下开发,也会强制区别大小写

ps:
//空模块
//当系统找不到指定的模块名称的时候,
//首先判断__hack_module()函数存不存在
//如果该函数存在,则利用该函数返回一个的对象(返回值必须为对象,否则return)

//如果__hack_module()不存在
//系统调用空模块 $module=A('Empty'); //大A方法 等同$module=new EmptyAction();
//如 http://localhost/orange/index.php/Aaaa/index
//没有Aaaa这个模块(类) 就执行EmptyAction下的index方法
class EmptyAction extends Action{
  public function index(){
    echo 111;

  }
}

根据地址栏的参数分析出要调用的模块和方法

Module的空操作
当一个对象,调用一个不存在的方法时,
有一个魔术方法__call将会被调用
该方法将会判断有没有_empty()方法存在,如果有,则调用

//例  http://localhost/orange/index.php/Index/aaa

class IndexAction extends Action{

  public function _empty(){

  }

}

//Index这个模块(类) 下没有aaa的方法,_empty()方法存在,即被调用

前置和后置的操作
是指,某个方法调用时,会先调用其前置操作,最后调用后置方法
APP.class.php 130行左右
当调用xxx方法时,如果存在_before_xxx方法,就先调用_before_xxx
调用完xxx方法时,如果存在_after_xxx方法是,就调用_after_xxx

ps:怎么样实现万能操作呢?(就是空模块空操作,)先写一个EmptyAction类,在这类下写一个_empty()方法

原文地址:https://www.cnblogs.com/loveyouyou616/p/2800853.html