Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用PSR-4和composer组织抽象继承文件?_Php_Namespaces_Composer Php_Psr 4 - Fatal编程技术网

Php 如何使用PSR-4和composer组织抽象继承文件?

Php 如何使用PSR-4和composer组织抽象继承文件?,php,namespaces,composer-php,psr-4,Php,Namespaces,Composer Php,Psr 4,我希望创建自己的composer包,但在此之前,我试图更好地理解应该如何组织它,特别是对于继承的抽象类 假设我有一些特定的项目,例如: 轿车、跑车等 V6电机、V8电机等 自动变速箱、四速变速箱等 对于这些项目中的每一个,我都有控制器类、模型类、实体类和其他类 我还有一些抽象类,比如CarController、CarModel等,MotorController、MotorModel等,这些抽象类是使用继承扩展的 然后,该组合将用于将零件注入汽车,将模型注入控制器等 目录文件结构应该如何组织,

我希望创建自己的composer包,但在此之前,我试图更好地理解应该如何组织它,特别是对于继承的抽象类

假设我有一些特定的项目,例如:

  • 轿车、跑车等
  • V6电机、V8电机等
  • 自动变速箱、四速变速箱等
对于这些项目中的每一个,我都有控制器类、模型类、实体类和其他类

我还有一些抽象类,比如CarController、CarModel等,MotorController、MotorModel等,这些抽象类是使用继承扩展的

然后,该组合将用于将零件注入汽车,将模型注入控制器等

目录文件结构应该如何组织,在这种情况下应该使用什么名称空间

并不是说我希望下面的内容是正确的,但我会尝试一下,这样你才能更好地理解我目前对这个话题的理解水平。我读过描述按功能和/或原型分组的帖子,我认为我应该先按功能分组。下面假定名称空间名为
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没什么严格的。通常,这取决于包的使用方式:如果它将作为一个整体使用,则按角色(一个目录中的所有控制器,包括抽象控制器)分离类。如果只能使用包的一部分(例如某人只需要跑车),则按域分开,并将与跑车相关的所有实体和控制器包含在一个子目录中。