Php 如何使用PSR-4和composer组织抽象继承文件?
我希望创建自己的composer包,但在此之前,我试图更好地理解应该如何组织它,特别是对于继承的抽象类 假设我有一些特定的项目,例如:Php 如何使用PSR-4和composer组织抽象继承文件?,php,namespaces,composer-php,psr-4,Php,Namespaces,Composer Php,Psr 4,我希望创建自己的composer包,但在此之前,我试图更好地理解应该如何组织它,特别是对于继承的抽象类 假设我有一些特定的项目,例如: 轿车、跑车等 V6电机、V8电机等 自动变速箱、四速变速箱等 对于这些项目中的每一个,我都有控制器类、模型类、实体类和其他类 我还有一些抽象类,比如CarController、CarModel等,MotorController、MotorModel等,这些抽象类是使用继承扩展的 然后,该组合将用于将零件注入汽车,将模型注入控制器等 目录文件结构应该如何组织,
- 轿车、跑车等
- V6电机、V8电机等
- 自动变速箱、四速变速箱等
MyVendorName
,子名称空间名为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\carcontrollers.php
我相信上面的说法是错误的,只是举个例子而已。如何使用PSR-4和composer组织抽象继承的文件?composer和PSR-4都不建议在这方面做任何事情-它们都关注技术方面,所以只要在类名中不使用不允许的字符,并且文件结构与命名空间结构匹配,它们就可以使用
事实上,“我应该如何构造我的类/名称空间”这个问题没有一个正确的答案。答案取决于个人喜好和项目的具体情况。如果你认为这种结构适合你的项目,那么就使用它——你是最了解该项目的人,你将使用它最多,因此你可能是这方面最有能力的人 谢谢rob006,你有什么标准来决定如何最好地组织它吗?@user1032531没什么严格的。通常,这取决于包的使用方式:如果它将作为一个整体使用,则按角色(一个目录中的所有控制器,包括抽象控制器)分离类。如果只能使用包的一部分(例如某人只需要跑车),则按域分开,并将与跑车相关的所有实体和控制器包含在一个子目录中。