Я хочу создать свой собственный пакет 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?