看下列圖:
用戶訪問一個不存在的操作—》解決:給每個控制器都定義個_empty()方法來處理
第二個解決方法:定義一個空操作
【空模塊處理】
我們使用一個類,但是現在這個類還沒有被include進來。
我們可以通過自動加載機制處理__autoload(),如果這個自動加載機制也沒有找到這個類,就會報錯。
即是請求一個空模塊
解決方法二:
【給應用增加函數庫文件】
在Common文件夾裡面,便是放入我們函數庫文件的地方
【模塊分組】
2. 視圖模板需要分組
3. 配置變量需要分組
4. 做配置config.php
【前置操作、後置操作】
控制器裡邊的方法在被調用的時候,在調用之前、或調用之後可以做一些額外的工作,就稱之為前置操作、後置操作
當我們請求這個網址:http://網址/index.php/Admin/Goods/zhanshi,在方法存在的情況下,這個動作在哪發生的,App.class.php 的exec()方法裡邊
一個類裡邊有許多方法,都需要前置和後置操作,應該如何解決?
解決:
【跨模塊調用】
實例化一個不存在的類,會通過__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()方法
R()方法使用