laravel5.2總結--composer使用和自動加載介紹


首先看下phpcomposer官方的定義,composer是 PHP 用來 管理依賴(dependency)關系的工具。你可以在自己的項目中聲明所依賴的外部工具庫(libraries),Composer 會幫你安裝這些依賴的庫文件。
composer可以幫助我們快速安裝類庫,通過過composer,我們可以使用大量的第三方庫,而無需自己造輪子,現在很多流行框架很注重使用composer,因為你可以使用大量優秀的輪子,大大提高效率.
注意是管理依賴,比如包a需要包b和c當我們安裝a的時候並不需要考慮包b和包c的安裝,這不僅僅是一個包的安裝工具
 

1 安裝composer

1.1 下載並安裝
官方網址肯定是最優秀的手冊, http://docs.phpcomposer.com/00-intro.html
window安裝,使用安裝程序
下載並且運行 Composer-Setup.exe,它將安裝最新版本的 Composer ,並設置好系統的環境變量,因此你可以在任何目錄下直接使用 composer 命令。
linux安裝
你可以將此文件放在任何地方。如果你把它放在系統的 PATH 目錄中,你就能在全局訪問它。
curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
 
1.2 composer的鏡像更換
一般情況下,安裝包的數據(主要是 zip 文件)一般是從 github.com 上下載的,安裝包的元數據是從 packagist.org 上下載的。
然而,由於眾所周知的原因,國外的網站連接速度很慢,並且隨時可能被“牆”甚至“不存在”。
“Packagist 中國全量鏡像”所做的就是緩存所有安裝包和元數據到國內的機房並通過國內的 CDN 進行加速,這樣就不必再去向國外的網站發起請求,從而達到加速 composer install以及 composer update 的過程,並且更加快速、穩定。因此,即使 packagist.org、github.com 發生故障(主要是連接速度太慢和被牆),你仍然可以下載、更新安裝包
 
方法一: 修改 composer 的全局配置文件(推薦方式)
打開命令行窗口(windows用戶)或控制台(Linux、Mac 用戶)並執行如下命令:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
方法二: 修改當前項目的 composer.json 配置文件:
打開命令行窗口(windows用戶)或控制台(Linux、Mac 用戶),進入你的項目的根目錄(也就是 composer.json 文件所在目錄),執行如下命令:
composer config repo.packagist composer https://packagist.phpcomposer.com
上述命令將會在當前項目中的 composer.json 文件的末尾自動添加鏡像的配置信息(你也可以自己手工添加):
"repositories": { "packagist": { "type": "composer", "url": "https://packagist.phpcomposer.com" } }
 

2 使用composer

2.1 方法1:通過composer require命令安裝擴展包
composer require monolog/monolog
 
安裝成功后的目錄結構,注意我們在根目錄下得到了vender文件夾(包下載后存放位置),composer.json和composer.lock文件(可以說這兩個是包管理的指引文件)
 
2.2 方法2:編寫composer.json文件,然后根據該文件安裝擴展包.
composer.json文件包含了項目的依賴和其它的一些元數據。
可以使用 composer init 命令,初始化一個json文件
在 composer.json 文件中指定 require key 的值。告訴 Composer 你的項目需要依賴哪些包。
{ "require": { "monolog/monolog": "1.0.*" } }
安裝上面的依賴
composer install
和是用composer require 命令一樣相同的結果,我們得到了 monolog/monolog 包,並將它下載到 vendor 目錄,而且我們也得到了composer.lock文件
 
2.3 關於開發過程中包的管理小建議:
1> 如果你正在使用Git來管理你的項目, 你可能要添加 vendor 到你的 .gitignore 文件中。 你不會希望將所有的代碼都添加到你的版本庫中。
2>install 命令將創建一個 composer.lock 文件到你項目的根目錄中。請提交你應用程序的 composer.lock (包括 composer.json)到你的版本庫中
 
2.4 關於如何安裝擴展包,進行管理
composer install - 如有 composer.lock 文件,直接安裝,否則從 composer.json 安裝最新擴展包和依賴;
composer update - 從 composer.json 安裝所有最新擴展包和依賴,同時也可以刪除依賴,注意是所有,慎用,慎用,慎用;
composer update vendor/package - 從 composer.json 或者對應包的配置,並更新到最新;
composer require new/package - 添加安裝 new/package, 可以指定版本,如: composer require new/package ~2.5.
雖說有多重更新的方案,但是為了項目的穩定性,建議使用require下載和更新擴展包
composer require "monolog/monolog:1.0.*" 通過指定版本可以更新擴展包
 

3 自動加載

 
如何引用這些庫文件。最簡單的方式就是require或者include,但這就不夠高大上了啊,好在composer可以幫我們解決這個問題。那就是autoload。
那么如何讓composer幫我們自動加載這個類呢?
composer 自動加載設置了 4種 加載方式 :
  • files
  • classmap
  • PSR-0
  • PSR-4
並推薦使用 PSR-4 規范
下面分別來探討,在composer.json定義這幾種加載方式:
 
3.1 使用Files方式(ps:通常作為函數庫的載入方式(而非類庫))
1> files 就是直接簡單粗暴的加載文件。在 composer 執行 install 等操作時, composer 會把文件中的配置存儲在 vendor/composer/autoload_static.php 文件中的生成一個 $files 數組。
 
2> composer.json 配置
"autoload": { "files": ["Lionis/Cool.php"] }
 
3> files鍵對應的值是一個數組,數組元素是文件的路徑,路徑是相對於應用的根目錄。
 
3.2 Classmap方式自動加載
1> classmap 通過配置指定的目錄和文件,在 composer 執行 install 等操作時, composer 會去掃描對應的目錄下以 .php 結尾的文件中的 class ,並存儲在 vendor/composer/autoload_classmap.php 文件中的返回數組中。
 
2> composer.json 配置
"autoload": { "classmap": [ "Lionis/", ] }
 
3> 如果 Lionis 下有一個叫 Cool的文件,當程序需要Cool類時,compoer的自動加載類通過查找Cool類所在的文件,然后再將改文件include進來。
 
 
3.3 PSR-0加載方式
1> 要求命名空間和目錄層層對應,且可以使用 _ 作為路徑分隔符,但是這會導致目錄結果變得過深,在 composer 執行 install 等操作時, composer 會把文件中的配置存儲在 vendor/composer/autoload_psr0.php 文件中的返回數組中。
 
2> composer.json 配置
"autoload": { "psr-0": { "Very\\Good": "vendor\Lionis" } }
 
在調用 use Very\Good\Love\SomeClass的時候,實際加載目錄為 vendor/Lionis/Very/Good/Love/SomeClass.php
 
3.4 PSR-4加載方式
1> 與 PSR-0 不同的是,取消掉了 _ 作為分隔符和目錄結構。在 composer 執行 install 等操作時, composer 會把文件中的配置存儲在 vendor/composer/autoload_psr4.php 文件中的返回數組中。
 
2> composer.json 配置
"autoload": { "psr-4": { "Very\\Good": "vendor\Lionis" } }
 
在調用 use Very\Good\Love\SomeClass的時候,實際加載目錄為 vendor/Lionis/Love/SomeClass.php,發現我們並不一定要有Very/Good文件層次
 
小結
composer 通過使用 composer.json ,用 json 的格式來指定我們需要自動加載的規則 ,當我們在 composer 執行 install 等操作時,composer會根據這些規則自動生成相應規則的自動加載文件,並存儲在vendor/composer下的相應文件中,我們只要在入口文件引入 vendor/autoload.php 就能很方便的便能使用自動加載 。
 
 
//關於自動加載,推薦文章
http://www.tuicool.com/articles/QNNFvmf
https://segmentfault.com/a/1190000005085600
http://blog.csdn.net/hel12he/article/details/46503875
 
簡單命令
composer require cuab/phpcrawl
composer init 初始化一個json文件
composer install 安裝json中的依賴
composer update 更新json中的依賴,可以刪除相應的依賴
composer search phpcrawl
composer show --all cuab/phpcrawl
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM