這篇文章主要介紹“php PSR規(guī)范中的PSR4和PSR0規(guī)范實例分析”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“php PSR規(guī)范中的PSR4和PSR0規(guī)范實例分析”文章能幫助大家解決問題。
創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),以良好的商業(yè)信譽,完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。
\<命名空間>(\<子命名空間>)*\類名
具體的內(nèi)容直接上文中提供的參考鏈接,這里總結(jié)重要的幾點:
頂級命名空間必須有一個
子命名空間可以多個或沒有
類名必須有
大小寫敏感,下劃線無實際意義(注意,下劃線是主要的和PSR0的區(qū)別)
去掉最前面的命名空間的分隔符,前面的命名空間作為[命名空間前綴],必須與至少一個[文件基目錄]對應(yīng)
子命名空間與[文件基目錄]下的文件夾對應(yīng),命名空間分隔符號作為目錄分隔符號
末尾的類名,與最終目錄下的對應(yīng)的.php文件相同
autoload的實現(xiàn)不可出現(xiàn)異常,也就是要解決掉異常問題
估計各位看得一臉懵逼吧??!
其實很好理解,舉例說明,我們先建立一個目錄叫myvendor,里面放著常用的工具包,如圖:
那么TestClass.php的命名空間應(yīng)該是Test,而CaseClass的應(yīng)該是CaseModel\CaseChild。統(tǒng)一從myvendor這個文件夾作為入口進入。也就是myvendor是一個超級[基目錄],然后Test和CaseModel是對應(yīng)命名空間的兩個[文件基目錄],剩下的子個名空間與目錄對應(yīng)。官網(wǎng)中還有其他的展示方式,但在這里我們用這種最標(biāo)準(zhǔn)的方式。
其實說白了,就是命名空間和目錄對應(yīng)上,寫代碼找文件就方便得很啦!!
上面說的是PSR4的規(guī)范,那么PSR0又是什么鬼?目前來說PSR0已經(jīng)廢棄了,它們兩個大部分內(nèi)容還是相近的,最大的區(qū)別在于PSR0中的_這個符號是有意義的,也就是/namespace/package/Class_Name這樣的內(nèi)容,會去提供/namespace/package/Class/Name.php文件,而PSR4中則忽略_這個符號的意義,還是去查找Class_Name.php這個文件。
TestClass.php代碼
namespace Test;
class TestClass
{
public function show()
{
echo "we are family!\n";
}
}
CaseClass.php代碼
namespace CaseModel\CaseChild;
class CaseClass
{
public function show()
{
echo "Good!\n";
}
}
接下來,在myvendor目錄外面添加一個psr4.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ī)范實例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。