摘要:如果需要下載新版組件,需要使用自動加載組件我們只需在文件的頂部使用函數(shù)導(dǎo)入創(chuàng)建的自動加載器創(chuàng)建的自動加載器就是名為的文件。如果實例化虛構(gòu)的類,會自動加載文件。
組件
PHP組件目錄Packagist
使用組件https://packagist.org
Packagist是查找PHP組件的地方,Composer是安裝PHP組件的工具
https://getcomposer.org
安裝:
curl -sS https://getcomposer.org/installer | php
使用curl下載Composer的安裝腳本,使用PHP執(zhí)行安裝腳本,最后在當(dāng)前目錄中創(chuàng)建composer.phar文件
有用的一條命令:
sudo mv composer.phar /usr/local/bin/composer
把composer編程可執(zhí)行的二進(jìn)制文件:
sudo chmod +x /usr/local/bin/composer
在~/.bash_profile中添加下面這行代碼:
PATH=/usr/local/bin:$PATH
命令行中執(zhí)行composer. Bingo
安裝組件進(jìn)入項目的最頂層目錄,然后為每個PHP組件執(zhí)行一次:
composer require vendor/package
這個命令可以安裝這個組件的最新穩(wěn)定版。
執(zhí)行命令的接軌哦可以在項目最頂層目錄中新建或更新的composer.json文件中查看。執(zhí)行這個命令后還會創(chuàng)建一個composer.lock文件。
composer.lock這個文件會列出項目使用的所有PHP組件,以及組件的具體版本號。這其實是鎖定了項目,讓項目只能使用具體版本的PHP組件。
Why? 如果有composer.lock文件,Composer會下載這個文件中列出的具體版本,而不管Packagist中可用的最新八本是多少。所以,應(yīng)該把composer.lock文件納入版本控制,讓大家使用相同版本的PHP組件。
composer.lock有個缺點,composer install命令不會安裝避其中列出的版本號新的版本。如果需要下載新版組件,需要使用
composer update自動加載PHP組件
我們只需在scan.php文件的頂部使用require函數(shù)導(dǎo)入Composer創(chuàng)建的自動加載器:
Composer創(chuàng)建的自動加載器就是名為autoload.php的文件。這樣我們就可以在項目中實例化任何組件。
舉個例子:編寫scan.php通過Guzzle和CSV組件編寫scan.php腳本。
options($csvRow[0]); if ($httpResponse->getStatusCode >= 400) { throw new Exception(); } } catch (Exception $e) { echo $csvRow[0] . PHP_EOL; } }實例化組件時,這里使用了GuzzleHttp & LeagueCsv命名空間。
執(zhí)行:
使用PHP編寫命令行腳本php scan.php urls.csv
http://php.net/manual/wrappers.php.php
http://php.net/manual/reserved.variables.argv.php
http://php.net/manual/reserved.variables.argc.php
Composer和私有庫Composer可以管理放在需要認(rèn)證的倉庫中的私有組件。
執(zhí)行composer install or composer update時,如果需要認(rèn)證,Composer會提醒你。
Composer還會詢問你是否把倉庫的認(rèn)證保存在本地的auth.json文件中。
auth.json:
{ "http-basic": { "example.org": { "username": "", "password": "" } } }如果不想等Composer向你詢問認(rèn)證憑據(jù),使用下述命令:
composer config http-basic.example.org your-username your-password解釋一下:http-basic告訴Composer,我們要為指定的域名天假認(rèn)證信息,example.org是主機(jī)名。這個命令會在當(dāng)前項目中的auth.json文件里保存憑據(jù)。
創(chuàng)建組件 文件系統(tǒng)的組織方式src/ tests/ composer.json README.md CONTRIBUTING.md LICENSE CHANGELOG.mdcomposer.jsonDemo: https://github.com/thephpleague/skeleton
舉個例子:
{ "name": "vendor/package", "description": "", "keywords": ["", ""], "homepage": "http://example.org", "license": "MIT", "authors": [ { "name": "", "homepage": "", "role": "Developer" } ], "support": { "email": "" }, "require": { "php": ">=5.4.0", "vendorX/packageX": "~5.0" }, "require-dev": { "vendorY/packageY": "~4.3" }, "suggest": { "league/csv": "~6.0" }, "autoload": { "psr-4": { "namespacesubnamespace": "src/" } } }其中:
support的對象是建議安裝的組件,以防與其他組件合作時需要。
autoload: 在PSR-4中,我們要把組件的命名空間前綴與相對組件根目錄的文件系統(tǒng)路徑對應(yīng)起來。
如果實例化虛構(gòu)的namespacesubnamespaceUrlScanner類,Composer會自動加載src/Url/Scanner.php文件。
READMEDemo: http://getcomposer.org
組件的名稱和描述
安裝說明
用法說明
測試說明
貢獻(xiàn)方式說明
支持資源
作者信息
軟件許可證
實現(xiàn)組件Demo
urls = $urls; $this->httpClient = new GuzzleHttpClient(); } public function getInvalidUrls() { $invalidUrls = []; foreach ($this->urls as $url) { try { $statusCode = $this->getStatusCodeForUrl($url); } catch (Exception $e) { $statusCode = 500; } if ($statusCode >= 400) { array_push($invalidUrls, [ "url" => $url, "status" => $statusCode ]); } } return $invalidUrls; } protected function getStatusCodeForUrl($url) { $httpResponse = $this->httpClient->options($url); return $httpResponse->getStatusCode(); } }提交提交代碼到自己的github上
提交組件到 https://packagist.org/packages/submit
可以通過設(shè)置鉤子,每次更新組件的repo時,通知Packagist: https://packagist.org/profile/
使用: composer require vendor/package
getInvalidUrls());參考
Modern PHP
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/21647.html
摘要:首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網(wǎng)站購買視頻,網(wǎng)站地址放在文末我的博客作用自動安裝所需要的模塊,自動加載管理項目,發(fā)布到網(wǎng)上上去是默認(rèn)的加載組件地址安裝下 首先支持下黃老師的視頻網(wǎng)站轉(zhuǎn)型這篇composer的學(xué)習(xí)筆記也是根據(jù)他的視頻教程寫的,一共十集,講解的很簡單感興趣的同志們可以上他視頻網(wǎng)站購買視頻...
摘要:框架組件化改造框架從單體應(yīng)用到組件化改造的架構(gòu)升級之路經(jīng)過一年多的開發(fā)框架功能越來越完善也越來越復(fù)雜初創(chuàng)時期的單體應(yīng)用已經(jīng)無法支撐項目的快速發(fā)展于是開發(fā)組在年前為版制定了組件化改造的重構(gòu)方案內(nèi)容速覽組件化原理包管理基礎(chǔ)知識組件化方案來 date: 2018-3-21 13:22:16title: Swoft| Swoft 框架組件化改造description: Swoft 框架從單體應(yīng)...
摘要:判斷是否存在構(gòu)造函數(shù),不存在直接實例化,存在則通過來獲取輸入函數(shù),并有相應(yīng)的方法解決依賴參數(shù)問題,實現(xiàn)依賴注入。 Laravel 框架關(guān)鍵技術(shù)解析·讀書筆記(一) 第一章 入口文件 請求訪問的入口文件,主要完成幾部分工作,分別是: 自動加載函數(shù)的添加 服務(wù)器實例化與服務(wù)注冊 路由加載 請求實例化與路由分發(fā) 相應(yīng)生成與發(fā)送 其中,自動加載函數(shù)用于包含引用文件,改文件是composer...
摘要:簡述的生命周期采用了單一入口模式,應(yīng)用的所有請求入口都是文件。分發(fā)請求一旦應(yīng)用完成引導(dǎo)和所有服務(wù)提供者都注冊完成,將會移交給路由進(jìn)行分發(fā)。此外,由于對動態(tài)方法的獨特用法,也使測試起來非常容易。 本書的 GitHub 地址:https://github.com/todayqq/PH... Laravel 作為現(xiàn)在最流行的 PHP 框架,其中的知識較多,所以單獨拿出來寫一篇。 簡述 La...
摘要:目前來看等語言還難以企及和。作為一個資深的開發(fā)者,在技術(shù)上給各位程序十點未來的建議,希望對大家有所幫助。開發(fā)者應(yīng)當(dāng)學(xué)習(xí)掌握規(guī)范,在開發(fā)程序時應(yīng)當(dāng)盡量遵循規(guī)范。程序員除了寫后臺程序之外,還有很大一部分工作在展現(xiàn)層,和瀏覽器前端打交道。 PHP 從誕生到現(xiàn)在已經(jīng)有20多年歷史,從Web時代興起到移動互聯(lián)網(wǎng)退潮,互聯(lián)網(wǎng)領(lǐng)域各種編程語言和技術(shù)層出不窮, Node.js 、 GO 、 Pytho...
閱讀 1561·2021-11-24 10:17
閱讀 1060·2021-09-29 09:43
閱讀 2194·2021-09-23 11:21
閱讀 2273·2019-08-30 14:13
閱讀 1322·2019-08-29 13:58
閱讀 3191·2019-08-28 17:51
閱讀 1860·2019-08-26 13:29
閱讀 3008·2019-08-26 10:13