laravel Autoloading

laravel被說成2013最流行框架,還有用過。打算用laravel作一個小項目,按照以前的習慣,習慣把controller按照功能劃分多個目錄 php

好比: laravel

controllers:
     admin:
           DashboardController.php
     web:
           HomeController.php web

laravel的route有各類規則,group應用同一組路由,配置以下 shell

Route::group(array('prefix' => 'admin', 'namespace' => 'App\Controllers\Admin'), function()
{
    Route::get('/home', 'HomeController@index');
})
admin下的DashboardController.php
<?php
namespace App\Controllers\Admin;

class DashboardController extends \BaseController{

    public function index(){
        echo "test";
        exit;
    }
}

運行,報錯 Class 'App\Controllers\Admin\DashboardController' not found json

路徑和命名都沒問題,只有看手冊、google、stackoverflow找問題,老半天沒結果,網上怎麼說的都有;簡單看下Router.php代碼,也沒發現問題。 app

後來看了http://stackoverflow.com/questions/18132220/laravel-4-package-or-modules,須要dump-autoload,試了下,果真能夠。 composer

再回頭看下laravel代碼,會先加載autoload_classmap.php文件,而後按照該文件找類。如今記錄下完整的過程 框架

編輯composer.json文件,添加 curl

"autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/controllers/admin",
而後運行:
composer dump-autoload
若是composer沒有安裝,參考https://getcomposer.org/doc/01-basic-usage.md,安裝下
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/bin/composer

就能夠了 google

相關文章
相關標籤/搜索