亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 框架的應用級對象問題

PHP 框架的應用級對象問題

慕無忌1623718 2019-04-10 20:49:23
在看到Yii框架的時候,還有Discuz的源程序,喜歡在初始化和dispatch之前new一個application對象,這個對象有什么用嗎?或者說有什么好處嗎?一般不是初始化和配置之后,再路由分發到Controller/Action一級開始執行,為什么在這中間要多一層application對象呢?PHP執行完生命周期就結束了,不管是require/include/autoload到最后其實都相當于一個文件對嗎?需要的全局參數我可以define/$_SERVER/$_ENV,需要的全局方法我可以publicstaticfunction,那上面說的那個application對象究竟有什么用處呢?
查看完整描述

2 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

這個APP對象用處可大了:
測試:一個應用就是一個app對象,所以單元測試的時候只要創建app對象-測試-銷毀app對象這樣就可以很簡單地搞定測試前的setup和測試后teardown;并且可以通過繼承app對象,利用多態來打樁,單元測試輕松搞定。
避免全局變量:全局變量是邪惡滴~消滅全局變量~但是有很多配置是全局的怎么辦?都塞到這個app對象里吧
通過不同類型的app對象,可以輕松改變程序對外的接口--拿Yii框架來說,搞個CWebApplication則就是正常的web應用,換個CConsoleApplication就搖身一變——成了一個控制臺應用,好神奇地說~
還沒想出來...
                            
查看完整回答
反對 回復 2019-04-10
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

類似的app對象一般是作為服務容器存在的,例如symfony2和mini型的silex,都是相同的概念,把一些實例化的對象啊配置項啊什么的塞到這個app對象里,那么只要你能訪問app對象,就可以拿到這些東西,這種方式我很喜歡。
有個抽象出來的專門作為依賴注入容器的輕便庫叫pimple,有時間你可以了解下。
                            
查看完整回答
反對 回復 2019-04-10
  • 2 回答
  • 0 關注
  • 383 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號