码迷,mamicode.com
首页 > Web开发 > 详细

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

时间:2015-07-02 00:55:47      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:

原文:Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

【空操作处理】

看下列图:

技术分享

实际情况:我们的User控制器没有hello()这个方法

一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()”

  用户访问一个不存在的操作—》解决:给每个控制器都定义个_empty()方法来处理

技术分享

 

  第二个解决方法:定义一个空操作

技术分享

【空模块处理】

我们使用一个类,但是现在这个类还没有被include进来。

我们可以通过自动加载机制处理__autoload(),如果这个自动加载机制也没有找到这个类,就会报错。

即是请求一个空模块

  解决一:定义一个空的控制器、空模块

技术分享

  解决方法二:

技术分享

【给应用增加函数库文件】

在Common文件夹里面,便是放入我们函数库文件的地方

技术分享

【模块分组】

  1. 控制器进行分组设置

技术分享

  2. 视图模板需要分组

技术分享

  3. 配置变量需要分组

技术分享

  4. 做配置config.php

技术分享

【前置操作、后置操作】

控制器里边的方法在被调用的时候,在调用之前、或调用之后可以做一些额外的工作,就称之为前置操作、后置操作

当我们请求这个网址:http://网址/index.php/Admin/Goods/zhanshi,在方法存在的情况下,这个动作在哪发生的,App.class.php  的exec()方法里边

技术分享

里面的前置操作,能够在zhanshi()被执行时,先执行

里面的后置操作,能够在zhanshi()被执行后,再执行

  一个类里边有许多方法,都需要前置和后置操作,应该如何解决?

解决:

技术分享

【跨模块调用】

实例化一个不存在的类,会通过__autoload()自动加载机制。

tp框架的__autoload()在哪?在Think.class.php

通过A()方法实例化控制器对象

  A(‘模块控制器’)   例如:A(‘Goods’)

  A(‘分组/控制器’)   例如:A(‘home/Ucenter’);

  A(‘项目://分组/控制器’)  例如:A(‘shop://home/Ucenter’);

    A()方法里边有嵌套调用import()方法,该方法帮助我们获得对应的控制器其,并require引入。A()方法顺便直接new 实例化对象

 

R(“项目://分组/控制器/操作”)方法

  是把控制器的引入、实例化对象、方法的调用都给继承好了。

  R(‘模块控制器/操作’)   例如:A(‘Goods’)

  R(‘分组/控制器/操作’)   例如:A(‘home/Ucenter/members’);

  R(‘项目://分组/控制器/操作’)  例如:A(‘shop://home/Ucenter/members’);

 

R()方法里边调用A()方法

A()方法里边调用import()方法

  A()方法使用

技术分享

  R()方法使用

技术分享

 

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

标签:

原文地址:http://www.cnblogs.com/lonelyxmas/p/4614853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!