溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

PHP商城 Composer 以及PSR規(guī)范

發(fā)布時(shí)間:2020-07-20 15:58:51 來源:網(wǎng)絡(luò) 閱讀:343 作者:德尚網(wǎng)絡(luò) 欄目:開發(fā)技術(shù)

Composer 依賴 在很多php商城系統(tǒng)中都有用到,如dsmall商城。隨著項(xiàng)目代碼量的不斷增加,以及一些庫的依賴,我們不得不引入包的管理,來解決不易管理、閱讀、模塊化等問題。 三方庫優(yōu)秀,而且很多人在維護(hù),功能對(duì)接也方便,我們沒有必要在這個(gè)一個(gè)常用的功能上花費(fèi)時(shí)間來封裝或者造輪子, 很多人在自己的項(xiàng)目中都實(shí)踐過,出現(xiàn)了問題,反應(yīng)的issue也很快會(huì)被解決掉,功能也不斷在完善。 一直強(qiáng)調(diào),站在巨人的肩膀上,我們會(huì)走的更遠(yuǎn),也許我們自己擼出來的代碼難等大雅之堂,無法比擬, 把重心放在自己的核心產(chǎn)品和功能時(shí)間上,學(xué)會(huì)借鑒學(xué)習(xí)和使用,降低自己的開發(fā)成本。 也許有人會(huì)覺得我使用三方庫可能會(huì)造成性能上的影響,有些功能我根本用不到。項(xiàng)目中代碼有很多無用的代碼,導(dǎo)致文件加載過慢, 其實(shí)不用擔(dān)心,?opcache可以將php腳本預(yù)編譯到共享內(nèi)存中來提升php的性能。
php Composer psr-4 autoload
Composer 是php用來管理依賴關(guān)系的工具,可以在項(xiàng)目中聲明外部依賴的工具庫,Composer會(huì)幫你安裝這些依賴的庫文件 psr-4 是一種代碼規(guī)范,能夠?qū)崿F(xiàn)package的自動(dòng)加載,規(guī)范了如何從文件路徑自動(dòng)加載類,同時(shí)也規(guī)范了自動(dòng)加載文件的位置
自動(dòng)加載
我們?cè)谥С諧omposer的項(xiàng)目中,只需引入這個(gè)文件,加上下面這段php的代碼,就可以得到自動(dòng)加載的支持了
<?php
require_once DIR . '/vendor/autoload.php';
復(fù)制代碼
composer.json
{
"autoload": {
"psr-4": {
"Work\": "src/"
},
"psr-0": {
"VendorNamespace": "src/"
}
}
}復(fù)制代碼
Composer 將注冊(cè)一個(gè) PSR-4 autoloader 到 Work 命名空間, PSR-0 則支持_,自動(dòng)轉(zhuǎn)化為目錄結(jié)構(gòu)
classmap
不遵循PSR-0/4規(guī)范的類庫,
files
明確的指定文件加載
額外的
repositories 自定義資源包庫
type
?composer Composer 類型的資源庫,是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)服務(wù)器上的
?vcs git、svn、hg等
?pear 從pear上獲取資源
?package 內(nèi)聯(lián)一個(gè)composer.json對(duì)象
scripts
Composer 允許你在安裝過程中的各個(gè)階段掛接腳本。
詳細(xì)流程
典型的命令,composer安裝時(shí)
?post-install-cmd?composer install執(zhí)行之后觸發(fā)
?post-update-cmd?composer update執(zhí)行之后觸發(fā)
自定義腳本demo
{
"scripts": {
"post-update-cmd": "MyVendor\MyClass::postUpdate",
"post-package-install": [
"MyVendor\MyClass::postPackageInstall"
],
"post-install-cmd": [
"MyVendor\MyClass::warmCache",
"phpunit -c app/",
"find vendor -type d -name .git -exec rm -rf '{}' \;"
]
}
}復(fù)制代碼
<?php
namespace MyVendor;
use Composer\Script\Event;
class MyClass{
public static function postUpdate(Event $event)
{
$composer = $event->getComposer();
// do stuff
}

public static function postPackageInstall(Event $event)
{
    $installedPackage = $event->getOperation()->getPackage();
    // do stuff
}

public static function warmCache(Event $event)
{
    // make cache toasty
}

}復(fù)制代碼
不然看出執(zhí)行的腳本可以是一個(gè)類中的靜態(tài)方法,當(dāng)然也可以是一個(gè)函數(shù),還可以是一條shell命令
我們也可以手動(dòng)執(zhí)行一些命令
composer run-script [--dev] [--no-dev] script

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI