從零開(kāi)始打造自己的PHP框架——第4章

Composer

Composer 是 PHP5.3以上 的一個(gè)依賴管理工具邢疙。它允許你申明項(xiàng)目所依賴的代碼庫(kù)憔杨,它會(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來(lái)進(jìn)行依賴管理。

安裝Composer

1障癌、訪問(wèn)Composer下載地址凌外,下載安裝對(duì)應(yīng)平臺(tái)的composer,安裝方法參照官方文檔涛浙。

2康辑、打開(kāi)命令行,輸入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、安裝依賴
在根目錄打開(kāi)命令行奔缠,輸入composer掠抬,如果composer.json文件有錯(cuò)誤會(huì)出現(xiàn)提示,沒(méi)有錯(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源浅蚪。

訪問(wèn)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作為第三方庫(kù)目錄哈踱。

2荒适、根目錄下index.php修改為:

// define('LIB',VKPHP.'/lib'); //第三方庫(kù)所在目錄
define('LIB',VKPHP.'/vendor'); //第三方庫(kù)所在目錄
include LIB.'/autoload.php'; //自動(dòng)加載第三方庫(kù)

3、core目錄下render.php修改為:

// require_once(LIB.'/smarty/libs/Smarty.class.php');

因?yàn)閕ndex.php中自動(dòng)加載了所有第三方庫(kù)开镣,所以我們不再需要自己引入刀诬。

訪問(wèn) 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');
}

訪問(wèn) http://vkphp.dev/index/render3 陕壹,即可看到炫酷的報(bào)錯(cuò)頁(yè)面,沒(méi)錯(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());
}

訪問(wèn) http://vkphp.dev/index/data ,即可看到炫酷的變量輸出頁(yè)面弥奸,沒(méi)錯(cuò)榨惠,var-dumper是一個(gè)變量顯示插件。

image

源碼分享

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

書簽

從零開(kāi)始打造自己的PHP框架

Composer中文網(wǎng)

Composer中文文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盛霎,一起剝皮案震驚了整個(gè)濱河市赠橙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌愤炸,老刑警劉巖期揪,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異规个,居然都是意外死亡凤薛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門诞仓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缤苫,“玉大人,你說(shuō)我怎么就攤上這事墅拭』盍幔” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)舒憾。 經(jīng)常有香客問(wèn)我镀钓,道長(zhǎng),這世上最難降的妖魔是什么镀迂? 我笑而不...
    開(kāi)封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任丁溅,我火速辦了婚禮,結(jié)果婚禮上探遵,老公的妹妹穿的比我還像新娘窟赏。我一直安慰自己,他們只是感情好别凤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布饰序。 她就那樣靜靜地躺著,像睡著了一般规哪。 火紅的嫁衣襯著肌膚如雪求豫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天诉稍,我揣著相機(jī)與錄音蝠嘉,去河邊找鬼。 笑死杯巨,一個(gè)胖子當(dāng)著我的面吹牛蚤告,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播服爷,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼杜恰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了仍源?” 一聲冷哼從身側(cè)響起心褐,我...
    開(kāi)封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笼踩,沒(méi)想到半個(gè)月后逗爹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嚎于,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年掘而,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片于购。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袍睡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出肋僧,到底是詐尸還是另有隱情女蜈,我是刑警寧澤持舆,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布色瘩,位于F島的核電站伪窖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏居兆。R本人自食惡果不足惜覆山,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泥栖。 院中可真熱鬧簇宽,春花似錦、人聲如沸吧享。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)钢颂。三九已至钞它,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間殊鞭,已是汗流浹背遭垛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留操灿,地道東北人锯仪。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像趾盐,于是被迫代替她去往敵國(guó)和親庶喜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容