從零開始打造自己的PHP框架——第4章

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)選擇參照下表:


image

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 installcomposer 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正常工作。

image

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ò)誤顯示插件。

image

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è)變量顯示插件。

image

源碼分享

https://github.com/voidking/vkphp/releases/tag/v1.4.0

書簽

從零開始打造自己的PHP框架

Composer中文網(wǎng)

Composer中文文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容