在項目中使用composer,你需要有一個composer.json文件,此文件的作用主要用來聲明包之間的相互關(guān)系和其他的一些元素標簽。
第一件事情在composer.json就是使用require關(guān)鍵字了,你將告訴composer哪些包是你項目所需要的 {
'require': {
'monolog/monolog': '1.0.*'
}
}
如你所見,require的對象將會映射包的名稱(
基本上包的命名是 主名/項目名稱(
我們需要使用monolog的版本是1.0.*,他的意思是只要版本是1.0分支即可,例如1.0.0,1.0.2或者1.0.99 版本定義的兩種方式:
在項目文件路徑下運行 $ composer install
這樣子他會自動下載monolog/monolog文件到你的vendor目錄下面。
接下來需要說明一件事情就是
在安裝完所有需要的包之后,composer會生成一張標準的包版本的文件在composer.lock文件中。這將鎖定所有包的版本。
這一點非常的重要,我們使用install命令來處理的時候,它首先會判斷composer.lock文件是否存在,如果存在,將會下載相對應(yīng)的版本(不會在于composer.json里面的配置),這意味著任何下載項目的人都將會得到一樣的版本。 如果不存在composer.lock,composer將會通過composer.json來讀取需要的包和相對的版本,然后創(chuàng)建composer.lock文件 這樣子就可以在你的包有新的版本之后,你不會自動更新了,升級到新的版本,使用update命令即可,這樣子就能獲取最新版本的包并且也更新了你的composer.lock文件。 $ php composer.phar update
或者
$ composer update
Packagist(這應(yīng)該就是composer,感覺有點像python的包,雖然沒那么強大,呵呵,有了這種標準以后,以后大家開發(fā)網(wǎng)站絕對會很輕松,可以借鑒很多人的代碼了,并且更加方便了?。?br>
Packagist是composer的主要倉庫,大家可以去看看,composer倉庫的基礎(chǔ)是包的源碼,你可以隨意的獲取,Packagist的目的建成一個任何人都可以使用的倉庫,這就意味著在你的文件中任意的require包了。
為了方便的加載包文件,Composer自動生成了一個文件 vendor/autoload.php,你可以方便只有的使用它在任何你需要使用的地方 require 'vendor/autoload.php';
這意味著你可以非常非常方便的使用第三方代碼了,假設(shè)你的項目需要使用monlog,你直接使用吧,他們都已經(jīng)自動加載了的! $log = new Monolog\Logger('name');
$log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING));
$log->addWarning('Foo');
當(dāng)然你也可以在composer.json中加載自己的代碼: {
'autoload': {
'psr-0': {'Acme': 'src/'}
}
}
composer將會把psr-0注冊為Acme的命名空間 你可以定義一個映射通過命名空間到文件目錄,src目錄是你的根目錄,vendor是同一級別的目錄,例如一個文件為:src/Acme/Foo.php就包含了Acme\Foo類 當(dāng)你在增加autoload之后,你必須要重新install來生成vendor/autoload.php文件 在我們引用此文件的時候,將會返回一個autoloader類的實力,所以你可以把返回的值放入一個變量,然后在增加更多的命名空間,如果在開發(fā)環(huán)境下這是非常方便的,例如: $loader = require 'vendor/autoload.php';
$loader->add('Acme\Test', __DIR__);
|
|