Composer
Composer 是 PHP5.3以上 的一個(gè)依賴管理工具。它允許你申明項(xiàng)目所依賴的代碼庫,它會(huì)在你的項(xiàng)目中為你安裝他們。Composer 不是一個(gè)包管理器。是的,它涉及 "packages" 和 "libraries",但它在每個(gè)項(xiàng)目的基礎(chǔ)上進(jìn)行管理,在你項(xiàng)目的某個(gè)目錄中(例如 vendor)進(jìn)行安裝。默認(rèn)情況下它不會(huì)在全局安裝任何東西。因此,這僅僅是一個(gè)依賴管理。
本篇,我們就在自己的項(xiàng)目中使用composer來進(jìn)行依賴管理。
安裝Composer
1、訪問Composer下載地址,下載安裝對(duì)應(yīng)平臺(tái)的composer,安裝方法參照官方文檔。
2、打開命令行,輸入composer -V,測(cè)試是否安裝成功。
使用Composer
初次使用
1、在項(xiàng)目根目錄下新建composer.json,內(nèi)容如下:
{
"name": "VKPHP",
"description": "A PHP Framework for php developer",
"type": "Framework",
"keywords": [
"PHP","PHP Framework","VKPHP"
],
"homepage": "http://www.voidking.com",
"time": "2017-09-14",
"license": "MIT",
"authors": [{
"name": "VoidKing",
"email": "voidking@qq.com",
"homepage": "http://www.voidking.com",
"role": "Student"
}],
"require": {
"PHP": ">=5.3.0",
"smarty/smarty": "~3.1"
}
}
需要解釋的,是require字段,要求PHP大于等于5.3,smarty大于等于3.1且小于等于4.0。
版本號(hào)選擇參照下表:
2、安裝依賴
在根目錄打開命令行,輸入composer,如果composer.json文件有錯(cuò)誤會(huì)出現(xiàn)提示,沒有錯(cuò)誤則提示可選參數(shù)和功能。
輸入composer install,即可安裝依賴到vendor目錄中,并且自動(dòng)生成composer.lock和vendor/autoload.php。
更新依賴
1、在composer.json中添加依賴,whoops任意版本,var-dumper任意版本。
"filp/whoops": "*",
"symfony/var-dumper": "*"
2、安裝依賴
composer install,提示
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
從提示可以看出,composer install讀取的是composer.lock中的依賴,而不是最新的composer.json。
所以,我們要使用命令composer update,這樣就可以下載新寫入的依賴,并且更新composer.lock。
更換Composer源
如果在composer install或composer update時(shí)非常慢,那么我們可以更換Composer源。
訪問Composer中國(guó)鏡像站,參照文檔,在composer.json所在目錄中執(zhí)行:
composer config repo.packagist composer https://packagist.phpcomposer.com
或者,直接在composer.json中添加:
"repositories": {
"packagist": {
"type": "composer",
"url": "https://packagist.phpcomposer.com"
}
}
使用依賴
smarty
1、當(dāng)前,lib目錄和vendor目錄中都包含了smarty,使用verdor中的smarty會(huì)更有格調(diào),遂棄用lib目錄,改用vendor作為第三方庫目錄。
2、根目錄下index.php修改為:
// define('LIB',VKPHP.'/lib'); //第三方庫所在目錄
define('LIB',VKPHP.'/vendor'); //第三方庫所在目錄
include LIB.'/autoload.php'; //自動(dòng)加載第三方庫
3、core目錄下render.php修改為:
// require_once(LIB.'/smarty/libs/Smarty.class.php');
因?yàn)閕ndex.php中自動(dòng)加載了所有第三方庫,所以我們不再需要自己引入。
訪問 http://vkphp.dev/index/render2 ,smarty正常工作。
whoops
根目錄index.php修改為:
if(DEBUG){
ini_set('display_errors', 'On');
$whoops = new \Whoops\Run;
$whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler);
$whoops->register();
}else{
ini_set('display_errors', 'Off');
}
訪問 http://vkphp.dev/index/render3 ,即可看到炫酷的報(bào)錯(cuò)頁面,沒錯(cuò),whoops就是一個(gè)錯(cuò)誤顯示插件。
var-dumper
修改app/ctrl/indexCtrl.php中的data函數(shù)為:
public function data(){
$db = new \core\db();
$sql = 'select * from vk_user';
$result = $db->query($sql);
dump($result);
dump($result->fetchAll());
}
訪問 http://vkphp.dev/index/data ,即可看到炫酷的變量輸出頁面,沒錯(cuò),var-dumper是一個(gè)變量顯示插件。
源碼分享
https://github.com/voidking/vkphp/releases/tag/v1.4.0