代码之家  ›  专栏  ›  技术社区  ›  user1032531

抽象继承文件应该如何与PSR-4和Composer一起组织?

  •  0
  • user1032531  · 技术社区  · 8 年前

    我希望创建自己的作曲家包,但在此之前,我正在努力更好地理解应该如何组织它,尤其是与继承的抽象类相关的。

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

    • 轿车、跑车等
    • 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\CarController.php .

    我相信以上是错误的,只是举个例子。抽象继承文件应该如何与PSR-4和Composer一起组织?

    1 回复  |  直到 8 年前
        1
  •  0
  •   rob006    8 年前

    无论是composer还是psr-4都不推荐这方面的任何内容——它们都专注于技术方面,只要您在类名和文件结构中不使用不允许使用的字符,并且与名称空间结构相匹配,它们就可以使用它。

    事实上,对于“我应该如何构造类/名称空间”这个问题,没有一个正确的答案。答案取决于个人喜好和项目的具体情况。如果你认为这个结构适合你的项目,那么就使用它——你是最了解项目的人,你将使用它最多,所以你可能是这方面最有能力的人。

    推荐文章