為什么Yii2 框架要在控制器里面 init方法取代__construct構造方法?thinkphp里面也是如此,控制器里面用 __init**方法取代了__construct?有哪些必要性和好處呢??
2 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
我剛才在yii2 2.0.6版本里面,__construct方法里面不能使用
Url::toRout('index/index')
因為控制器在構造方法執行完畢后才會注冊。
你只能在前置操作里面操作,也就是你所謂的__ini*()方法。
也就是說,前置方法能得到一個系統級初始化完畢后的系統,構造方法不是。
前置方法并沒有取代構造方法
構造方法總是會執行,前置方法在內部調用時候不會執行,只對訪問控制器有效。

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
因為控制器的基類需要__constuct()
方法做一些初始化的工作(比如初始化模板引擎),如果你在控制器里實現了__construct,你還需要在__construct里調用parent::__construct()
就太麻煩了。
所以通常會在基類里定義一個空的init方法,并且在__construct里(通常是末尾)調用$this->init()
,這樣開發的時候就只需要實現init方法
- 2 回答
- 0 關注
- 1439 瀏覽
添加回答
舉報
0/150
提交
取消