PHP :MVC的框架模式和Composer
今天的協同開始裏MVC已經是廣爲達成共識,就像和平與發展是21世紀的主題,之前的代碼都是層與層區別的不明顯,html和PHP混合開發,效率不高,1999年,sun公司的J2EE,是最早最完整的MVC模式。
優點:
- 多個view共享一個Model。View負責負責格式化並把他們呈現給用戶,業務邏輯和表示層分離,同一個Model可以被不同的View重用,大大提高了代碼的可重用性。
- Controller是高獨立內聚的對象,與Model與View保持獨立。
- Controller提高了應用程序的靈活性和可配置性。
MVC模式強調職責分離,帶來了一個現代軟件工程要求的重要特徵:可測試性,基於MVC的程序良好的職責分離設計下,各個部分可獨立進行單元測試,利於自動化測試,集成等諸多優點。
缺點:
- MVC應用會產生很多文件,對於PHP這種不能常駐內存的語言來說,大量的文件加載和變量造成了大量開銷。
- 初學的程序員不容易理解。
Composer,來實現和引入第三方類庫,並利用其實現依賴管理和自動升級。
Composer解決的問題:
- 你有一個依賴N多庫的項目
- 這些庫中一些項目又依賴於其他的庫
- 你聲明你所依賴的庫
- Composer找出那些包那個版本將會被安裝
安裝及使用
//安裝命令
curl -sS https://getcomposer.org/installer | php
//設置全局變量
mv composer.phar /usr/local/bin/composer
Composer常用命令:
// 從當前目錄讀取composer.json文件,處理了依賴關係,並把其安裝到vender目錄下,如果當前目錄下,如果當前存在composer.lock文件,他會從此文件讀取依賴版本
composer install
//獲取依賴的最新版本,並且升級composer.lock文件
composer update
//打印自動加載索引,某些情況下你需要更新autoloader,例如在包中加入了一個新類。
composer dump-autoload
加載方式:
-
PSR-0
-
PSR-4
-
class-map
-
直接包含file
{ "autoload": { "psr-4": { "Monolog\\": "src/", "Vendor\\Namespace\\": "" } } }
composer 加載原理:key和value就定義了namespace以及其對應的目錄映射。 當試圖自動記載 Vendor\\Namespace\\
類的使用時,會去尋找src/
這個文件,如果它存在自動加載,要注意的是此時Vendor\\Namespace\\
並不會出現在文件路徑中。
而composer.json這樣的配置會被Composer 轉換成 namespace 與文件目錄的MAP形式,並存在vender/composer/autoload_psr4.php文件中。所以如果你安裝的某個擴展自動加載是PSR-4形式,你可以在autoload_psr4.php找到他的真實路徑。
Composer優點:
- 更加集中管理\自動加載類庫
- 統一管理第三方類庫,支持升級擴展
簡說CI框架
CI框架的優點:
單入口:使得每一個請求都需要經過對這個入口文件處理,文件由此進行,Controller層的管理變得輕而易舉,開發者可以在這個入口實現很多針對Controller層甚至View層的統一管理,比如設置字符集,CSRF過濾等。
MVC朝着輕量化、API化發展了(主要JavaScript+Json形式)