標籤:衝突 namespace 分享 ble 相同 目錄 isa 靜態類 控制器
今天研究了在Laravel架構中的控制器中加入背景目錄.發現了一些小的規律,拿來和大家分享一下吧.
通常情況下,我們是直接在controllers目錄中加入我們的控制器,然後再routes.php 路由表中尋找對應的控制器和action進行處理.可是如今有個問題,假設我們的前台和後台同在一個項目中,也就是說前台和背景控制器會在一塊.當然不是沒有辦法進行區分.我們能夠在控制器前面加上Front,Admin等標記來分別前台控制器和後台控制.
這裡我給大家提供一種方法來將前背景控制器進行分離.
首先我們在controllers目錄中建立一個admin目錄.
第一種方法:直接在後台建立控制器,比方AdminController.php 裡面正常的寫上我們的內容.
在路由表中,
Route::get(‘admin‘,‘[email protected]‘);
我們發現程式報錯,說無法找到控制器AdminController.
我們開啟命令列工具,進入到該項目的更檔案夾中,也就是artisan,composer.json所在的檔案夾中,
執行命令 composer dumpautoload 或者 composer dump-autoload
這是對自己主動載入進行最佳化.
我們執行完命令之後,進入vendor檔案夾的composer檔案夾中,
我們查看一下我們的autoload_classmap.php檔案,發現裡面多了個AdminController的一條記錄.
對了,然後我們重新整理一下瀏覽器,就行看到該後台控制器的內容了.
可是這個有個缺點,就是每次加入新的控制器的時候都必需要執行一下這個命令才行..
另一點須要注意的是:假設你的後台目錄中出現了和前台同樣的控制器的時候,這是的程式會報錯.
提示後台和前台有個控制器名字相衝突.
這裡的解決方式是在後台使用名字空間進行處理.
比方我們我的後台相同有個IndexController控制器
<?
PHP
namespace Controllers\Admin;
class IndexController extends \BaseController{
public function index(){
}
}
?
>
這裡還是要注意一點了,當使用名字空間之後,我們在裡面使用的全部靜態類都預設是當前名字空間的類.所以有時我們須要使用use View; Use ...等之類的名字空間.
同一時候在路由表中我們相同要使用 Controllers\Admin\[email protected] 這種控制器來處理請求.
好了,這就是我學到的內容,拿來和大家分享分享.
Persistence makes life valuable.
Best Wishes.
php Laravel 架構之建立後台目錄