Как организовать абстрактные унаследованные файлы с помощью PSR-4 и composer? - PullRequest
0 голосов
/ 23 мая 2018

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

Допустим, у меня есть некоторые конкретные элементы, такие каккак:

  • SedanCar, SportsCar и т. д.
  • V6Motor, V8Motor и т. д.
  • Автоматическая передача, FourSpeedTransmission и т. д.

Для каждого изэти элементы, у меня есть классы контроллеров, классы моделей, классы сущностей и другие классы.

У меня также есть абстрактные классы, такие как CarController, CarModel и т. д., MotorController, MotorModel и т. д., и т. д., в которых расширены конкретные классы.от использования наследования.

Композиция будет использоваться для инжекции деталей в автомобили, моделей в контроллеры и т. д.

Как организовать файловую структуру каталогов и какие пространства имен следует использовать для этого сценария?

Не то, чтобы я ожидал, что следующее будет правильным, но я сделаю удар так, чтобычто вы можете лучше понять мой текущий уровень понимания по этой теме.Я читал посты, описывающие группировку по функциям и / или по архетипам, и я считаю, что сначала я должен делать это по функциям.Далее предполагается, что NamespaceName равно MyVendorName, SubNamespaceName равно Car и путь к файлу /var/www/vendor.Тогда, возможно, я бы сделал:

/var/www/vendor/my-vendor-name/src/Car/Controllers/AllMyAbstractControllers.php
/var/www/vendor/my-vendor-name/src/Car/Models/AllMyAbstractModels.php
/var/www/vendor/my-vendor-name/src/Car/Entities/AllMyAbstractEntities.php
/var/www/vendor/my-vendor-name/src/Car/Cars/SportsCar/AllSpecificSportsCar_Controller_Model_Entity_Classes.php
/var/www/vendor/my-vendor-name/src/Car/Cars/SedanCar/AllSpecificSedanCar_Controller_Model_Entity_Classes.php
/var/www/vendor/my-vendor-name/src/Car/Motors/V6Motor/AllSpecificV6Motor_Controller_Model_Entity_Classes.php
/var/www/vendor/my-vendor-name/src/Car/Motors/V8Motor/AllSpecificV8Motor_Controller_Model_Entity_Classes.php
etc, etc...

Затем я мог бы \MyVendorName\Car\Cars\SportsCar\SportsCarController.php вытянуть \MyVendorName\Car\Controllers\CarController.php.

Я уверен, что вышеупомянутое неверно, и просто предоставил это в качестве примера.Как организовать наследование абстрактных файлов с помощью PSR-4 и composer?

1 Ответ

0 голосов
/ 24 мая 2018

Ни Composer, ни PSR-4 ничего не рекомендуют в этом вопросе - они сосредоточены на технических аспектах, поэтому, пока вы не используете запрещенные символы в именах классов, а структура файлов соответствует структуре пространств имен, они в порядке сit.

На самом деле, нет единого правильного ответа на вопрос «как мне структурировать мои классы / пространства имен».Ответ зависит от личных предпочтений и специфики проекта.Если вы думаете, что эта структура подойдет для вашего проекта, то используйте ее - вы тот человек, который знает проект лучше всего, и вы будете использовать его чаще всего, так что вы, вероятно, самый компетентный человек в этом вопросе.

...