2013-06-30 3 views
4

Я хочу структурировать мое приложение laravel так, чтобы весь мой код находился под каталогом src. Моя структура проекта будет выглядеть примерно так. Как мне это сделать, где я еще могу позвонить Route::get('accounting/item/{id}','[email protected]')Организация Laravel и автозагрузки подкаталогов

Я хочу, чтобы не добавлять каждый модуль под src в ClassLoader. Есть ли способ сказать загрузчику классов загружать все подкаталоги в родительском каталоге src?

app 
app/src 
app/src/accounting 
app/src/accounting/controllers 
app/src/accounting/models 
app/src/accounting/repos 
app/src/accounting/interfaces 
app/src/job 
app/src/job/controllers 
app/src/job/models 
app/src/job/repos 
app/src/job/interfaces 

ответ

11

Да, это называется PSR-0.

Вы должны пропустить все ваши коды. Обычно у вас будет имя поставщика, в котором вы используете пространство имен верхнего уровня. Ваша структура приложения должна выглядеть примерно так.

app/src/Vendor/Accounting/Controllers 
app/src/Vendor/Job/Controllers 

После этого ваши контроллеры будут заменены соответственно.

namespace Vendor\Accounting\Controllers; 

И при использовании их в маршрутах.

Route::get('accounting/item/{id}','Vendor\Accounting\Controllers\[email protected]'); 

Наконец, вы можете зарегистрировать пространство имен с Composer в вашем composer.json.

"autoload": { 
    "psr-0": { 
     "Vendor": "app/src" 
    } 
} 

Конечно, если вы не хотите, чтобы верхний уровень Vendor имен вы можете удалить его, но вы должны зарегистрировать каждый компонент как PSR-0.

"autoload": { 
    "psr-0": { 
     "Accounting": "app/src", 
     "Job": "app/src", 
    } 
} 

После этого запустите composer dump-autoload один раз, и вы должны иметь возможность добавлять новые контроллеры, модель, библиотеку и т.д. Просто убедитесь, что структура каталогов совпадет с именованием каждого файла.

+0

Вот ссылка с сайта композитора, если вам нужно больше узнать о том, как это делает композитор https://getcomposer.org/doc/04-schema.md#psr -0 –

1

Есть ли у вас композитор? Вы должны использовать это:

composer dump-autoload

Но вы можете можно добавить каталоги загрузчиком классов в Laravel в. Проверьте ссылку здесь: http://laravel.com/api/class-Illuminate.Support.ClassLoader.html

+0

Да, и это будет работать, но есть ли способ автозагрузки всех подкаталогов, не декларируя их отдельно? Я не хочу регистрировать каждый каталог под/src – ipengineer

Смежные вопросы