【问题标题】:How should abstract inherited files be organized with PSR-4 and composer?抽象继承文件应该如何用 PSR-4 和 composer 组织?
【发布时间】:2018-05-23 14:08:10
【问题描述】:

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

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

  • 轿车、跑车等
  • 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应该如何组织抽象继承文件?

【问题讨论】:

    标签: php namespaces composer-php psr-4


    【解决方案1】:

    Composer 和 PSR-4 都不建议在这件事上做任何事情 - 他们专注于技术方面,所以只要你不在类名和文件结构中使用不允许的字符匹配命名空间结构,它们就可以了它。

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

    【讨论】:

    • 谢谢 rob006,您有什么标准来决定如何最好地组织它吗?
    • @user1032531 没有什么严格的。通常取决于如何使用包:如果将其作为一个整体使用,则按角色分隔类(一个目录中的所有控制器,包括抽象控制器)。如果只能使用包的一部分(例如,某人只需要跑车),则按域分开,并将与跑车相关的所有实体和控制器包含在一个子目录中。
    猜你喜欢
    • 2017-12-10
    • 2014-09-12
    • 1970-01-01
    • 2014-07-25
    • 2017-11-20
    • 1970-01-01
    • 2018-07-25
    • 2021-07-25
    • 1970-01-01
    相关资源
    最近更新 更多