Laravel 5: совместное использование папки «логической модели приложения» между проектами

Привет, разработчик Laravel,

Я действительно испытываю стресс, сохраняя логическую модель моих проектов laravel равной, и вы могли бы мне помочь:

Вот контекст:

  • У меня есть 4 разных проекта laravel (v5.3)
  • Во всех проектах используется набор классов, которые я называю «логической моделью».
  • Все проекты реализуют эту логическую модель, дублирующуюся во всех 4 проектах.
  • поддерживать эти логические модели одинаково сложно при разработке

Вот вопрос:

  • Как я могу использовать laravel для включения «общей» [папки классов | отдельный проект laravel] tp_logic_model, поэтому при разработке будет получена такая структура папок:

Laravel 5: совместное использование папки «логической модели приложения» между проектами

а все проекты включают реализованные классы в папке tp_logic_model.

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

Есть ли простой способ добиться такого поведения?


  • Надеюсь, вы уловили мои потребности.

  • Конечно, это проблема комфорта разработки, но ее легко понять и, возможно, людям интересно.

Вы можете превратить его в пакет композитора.

DevK 10.03.2018 23:31

Определенно звучит как идеальный футляр для упаковки. Но почему возражения против пакета? Это буквально один репозиторий, несколько строк в вашем composer.json, и все готово.

user320487 11.03.2018 00:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
2
517
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Может быть, вы могли бы использовать подмодули git?

https://git-scm.com/book/en/v2/Git-Tools-Submodules

похоже, это довольно большая работа: возможно, есть более простой способ

Richard Wieditz 10.03.2018 22:16
Ответ принят как подходящий

Если эти четыре проекта находятся на одном сервере. Самый простой способ добиться этого - использовать символическую ссылку.

Допустим, вы храните коды общей логики на project1 по адресу /var/www/project1/tp_logic_model. Чтобы поделиться им на project2, вы можете просто создать символическую ссылку на общие логические коды в каталоге project2:

ln -sfv /var/www/project1/tp_logic_model /var/www/project2/tp_logic_model

Вы по-прежнему можете настроить composer.json в каждом проекте на автозагрузку классов в каталоге tp_logic_model, даже если на самом деле это просто символическая ссылка.

// composer.json on project2, autoload from symbolic link
{
  ...
  "autoload": {
    "psr-4": {
      "Shared\\": "tp_logic_model"
    }
  }
}

Надеюсь это поможет.

Это было именно то, что я искал. Большое спасибо !

Richard Wieditz 11.03.2018 00:58

Я создал пошаговое руководство по обмену моделями логики приложений (Eloquent) между несколькими приложениями. Он опубликует пакет в частном репозитории GitHub, который в дальнейшем можно будет использовать в качестве зависимости композитора.

https://ambujsoni.medium.com/share-laravel-eloquent-models-between-multiple-applications-179d8f31078c

Надеюсь, это поможет.

Другие вопросы по теме