您好,登錄后才能下訂單哦!
這篇文章主要介紹“php PSR規(guī)范中的PSR4和PSR0規(guī)范實(shí)例分析”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“php PSR規(guī)范中的PSR4和PSR0規(guī)范實(shí)例分析”文章能幫助大家解決問(wèn)題。
\<命名空間>(\<子命名空間>)*\類(lèi)名
具體的內(nèi)容直接上文中提供的參考鏈接,這里總結(jié)重要的幾點(diǎn):
頂級(jí)命名空間必須有一個(gè)
子命名空間可以多個(gè)或沒(méi)有
類(lèi)名必須有
大小寫(xiě)敏感,下劃線(xiàn)無(wú)實(shí)際意義(注意,下劃線(xiàn)是主要的和PSR0的區(qū)別)
去掉最前面的命名空間的分隔符,前面的命名空間作為[命名空間前綴],必須與至少一個(gè)[文件基目錄](méi)對(duì)應(yīng)
子命名空間與[文件基目錄](méi)下的文件夾對(duì)應(yīng),命名空間分隔符號(hào)作為目錄分隔符號(hào)
末尾的類(lèi)名,與最終目錄下的對(duì)應(yīng)的.php文件相同
autoload的實(shí)現(xiàn)不可出現(xiàn)異常,也就是要解決掉異常問(wèn)題
估計(jì)各位看得一臉懵逼吧!!
其實(shí)很好理解,舉例說(shuō)明,我們先建立一個(gè)目錄叫myvendor,里面放著常用的工具包,如圖:
那么TestClass.php的命名空間應(yīng)該是Test,而CaseClass的應(yīng)該是CaseModel\CaseChild。統(tǒng)一從myvendor這個(gè)文件夾作為入口進(jìn)入。也就是myvendor是一個(gè)超級(jí)[基目錄](méi),然后Test和CaseModel是對(duì)應(yīng)命名空間的兩個(gè)[文件基目錄](méi),剩下的子個(gè)名空間與目錄對(duì)應(yīng)。官網(wǎng)中還有其他的展示方式,但在這里我們用這種最標(biāo)準(zhǔn)的方式。
其實(shí)說(shuō)白了,就是命名空間和目錄對(duì)應(yīng)上,寫(xiě)代碼找文件就方便得很啦??!
上面說(shuō)的是PSR4的規(guī)范,那么PSR0又是什么鬼?目前來(lái)說(shuō)PSR0已經(jīng)廢棄了,它們兩個(gè)大部分內(nèi)容還是相近的,最大的區(qū)別在于PSR0中的_這個(gè)符號(hào)是有意義的,也就是/namespace/package/Class_Name這樣的內(nèi)容,會(huì)去提供/namespace/package/Class/Name.php文件,而PSR4中則忽略_這個(gè)符號(hào)的意義,還是去查找Class_Name.php這個(gè)文件。
TestClass.php代碼
<?php
namespace Test;
class TestClass
{
public function show()
{
echo "we are family!\n";
}
}
CaseClass.php代碼
<?php
namespace CaseModel\CaseChild;
class CaseClass
{
public function show()
{
echo "Good!\n";
}
}
接下來(lái),在myvendor目錄外面添加一個(gè)psr4.php文件,代碼如下:
<?php
spl_autoload_register(function ($class) {
$vendor = __DIR__ . '/myvendor';
$file = $vendor . '/' . str_replace('\\', '/', $class) . '.php';
if (file_exists($file)) {
require $file;
}
});
use CaseModel\CaseChild\CaseClass;
use Test\TestClass;
$t = new TestClass();
$t->show();
$c = new CaseClass();
$c->show();
關(guān)于“php PSR規(guī)范中的PSR4和PSR0規(guī)范實(shí)例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guā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)容。