Несколько проектов с использованием одного экземпляра laravel

Я новичок в laravel. Согласно моим исследованиям в этой области, я считаю, что это очень полезно для моих проектов. Однако мне сложно настроить его для использования одного экземпляра структуры laravel для нескольких проектов. Я не хочу следовать методу многосайтового сайта, доступного в laravel, т. Е. Используя структуру каталогов в моделях и контроллерах для проектов, потому что я не смогу продвигать изменения, связанные с моим проектом, за один шаг в git.

Я хочу что-то подобное.

т.е. Новый проект должен иметь свой собственный каталог приложений и может использовать функции модели из общего проекта.

Это облегчит мою задачу и будет очень полезно для моих предстоящих проектов. Если кто-то 1 может помочь мне с этим, я действительно ценю.

Использование пространств имен для организации и разделения вещей

Создайте записи автозагрузки PSR-4 для разделения файлов проектов по пространству имен:

"psr-4": { "App\\Core\\": "app/App/Core", "App\\Main\\": "app/App/Main", "App\\Project1\\": "app/App/Project1", "App\\Project2\\": "app/App/Project2" }, 

Все, что вы использовали в Core, все, что не принято в связанных файлах проекта.

Теперь вам просто нужно создать свои файлы в их соответствующих папках и их пространства имен:

Это BaseController in Core, используемый всеми вашими контроллерами:

 <?php namespace App\Core\Controllers; use Controller; // This is the Laravel Controller class BaseController extends Controller { } 

Это базовый контроллер основного приложения с использованием вашего основного контроллера:

 <?php namespace App\Main\Controllers; use App\Core\Controllers\BaseController as CoreBaseController; class BaseController extends CoreBaseController { } 

И это HomeController основного приложения, используя ваш базовый контроллер, поскольку они находятся в том же пространстве имен, что вам даже не нужно импортировать файл:

 <?php namespace App\Main\Controllers; class HomeController extends BaseController { } 

Каждый отдельный файл класса в Laravel может быть организован таким образом, даже ваши представления, поэтому вы можете иметь эти файлы:

 app/App/Core/Controllers/BaseController.php app/App/Main/Controllers/BaseController.php app/App/Main/Controllers/HomeController.php app/App/Project1/Controllers/BaseController.php app/App/Project1/Controllers/PostsController.php app/App/Project1/Controllers/UsersController.php app/App/Project1/Models/User.php app/App/Project1/Models/Post.php app/App/Project1/Models/Roles.php 

Затем ваши маршруты могут быть разделены (организованы) и префикс пространства имен:

 Route::group(['prefix' => 'project1', 'namespace' => 'App\Project1\Controllers'], function() { Route::get('/', 'HomeController@index'); Route::get('posts', 'PostsController@index']); }); 

Предоставление этих URL:

 http://yourdomain.com/project1 http://yourdomain.com/project1/posts 

И указывая действия на действия контроллера:

 App\Project1\Controllers\HomeController@index App\Project1\Controllers\PostsController@index 

На этот вопрос не на что ответить, но в общих чертах то, что вы хотите сделать, очень возможно.

Вы можете создать каталог в папке приложений для каждого проекта и пространства имен каждого из классов в структуре, которую вы создаете под ней. Затем вы использовали автозагрузку PSR (в идеале PSR-4), чтобы сделать эти классы доступными.

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

ОДНАКО, все, что сказал, это не то, что я сделал бы. Вы не сказали, почему вы хотите структурировать свои проекты таким образом, поэтому у вас может быть совершенно веская причина, но лично я предпочитаю размещать общие библиотеки в своих собственных пакетах (помогает обеспечить четкие границы и очистить apis) и использовать Composer для потяните их в каждый проект.