2019-08-06 15:30:33 4174瀏覽
本篇文章扣丁學(xué)堂PHP培訓(xùn)給讀者們介紹一下YII分模塊加載路由的實(shí)現(xiàn)方法,對(duì)PHP開(kāi)發(fā)技術(shù)感興趣的小伙伴就隨小編來(lái)了解一下吧,希望對(duì)小伙伴們有幫助。
起因。因?yàn)轫?xiàng)目比較大了之后劃了很多模塊。就使得config下面的路由文件變得很龐大,變得不好維護(hù)。這個(gè)時(shí)候就想如果可以把路由拆分到不同模塊去自己管理,就會(huì)變得清晰很多。
拆了之后項(xiàng)目配置結(jié)構(gòu)如下:
新增了一個(gè)modules.php來(lái)管理模塊的加載
調(diào)整之前 web.php的模塊加載配置如下
調(diào)整之后 web.php模塊配置如下
'modules' => require (__DIR__).'/modules.php',
modules.php里面配置如下
然后修改rules.php
利用反射找到每個(gè)模塊的真實(shí)路徑,然后加載當(dāng)前模塊下的rules.php文件
每個(gè)模塊的目錄結(jié)構(gòu)
'modules' => [
'setup' => [
'class' => 'appcomponents\modules\setup\Module',
],
'shareorder' => [
'class' => 'appcomponents\modules\shareorder\Module',
],
]
return [
'setup' => [
'class' => 'appcomponents\modules\setup\Module',
],
'shareorder' => [
'class' => 'appcomponents\modules\shareorder\Module',
],
];
$default = [
];
$modules = require __DIR__.'./modules.php';
$roles = [];
foreach ($modules as $module)
{
$class = new ReflectionClass($module['class']);
$filePath = $class->getFileName();
$filePath = str_replace('Module','rules',$filePath);
if(file_exists($filePath))
{
$role = require $filePath;
$roles = array_merge($roles,$role);
}
}
return array_merge($roles,$default);。
其中Modules.php是配置當(dāng)前模塊,加載命名空間等。rules.php為當(dāng)前模塊的下的路由配置。
想要了解更多關(guān)于PHP開(kāi)發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的PHP講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門(mén)到精通開(kāi)發(fā)實(shí)戰(zhàn)技能。扣丁學(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】 【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】