php - 组织 PHP 类层次结构的最佳方式

标签 php frameworks class-structure class-hierarchy

我的大部分项目都使用了一个有点原始的框架,但我想到了一个一般的设计问题,但我还没有解决。对于给定的应用程序,我应该将特定于应用程序的类结构与框架的结构分开,还是在框架之上构建不是一件坏事?

例如,假设我有一个带有基本 Controller 类的框架,并为我的应用程序的给定部分扩展了它。哪种安排最合理,为什么?

类结构 A:

  • 调试时直观、易于查找源文件。
  • 文件命名/目录结构反射(reflect)了类的层次结构。
- Framework_Control                 "Framework\Control.php"
   - Framework_Control_Index        "Framework\Control\Index.php"
   - Framework_Control_Home         "Framework\Control\Home.php"
   - Framework_Control_Contact      "Framework\Control\Contact.php"
   - Framework_Control_About        "Framework\Control\About.php"

类结构 B:

  • 保持框架模块化并易于更换/更新。
  • 为目录结构增加了一些复杂性,目录/文件命名不再始终遵循类层次结构。
- Framework_Control                 "Framework\Control.php"
   - Application_Control_Index      "Application\Control\Index.php"
   - Application_Control_Home       "Application\Control\Home.php"
   - Application_Control_Contact    "Application\Control\Contact.php"
   - Application_Control_About      "Application\Control\About.php"

我知道总的来说这会归结为个人偏好,但我想确保在决定采用哪种方式之前权衡所有利弊。这实际上归结为类命名和目录结构,因为在任何一种情况下实际层次结构都将保持不变。

最佳答案

我建议您在两个不同的类别中查看您的源代码,外部依赖项或跨多个站点使用的代码而不是任何单个站点的本地代码和本地依赖项或您所访问的特定站点的本地代码正在努力。

听起来 Framework/Control.php 是更大的外部依赖的一部分,应该这样管理,而 Application/Control 文件都是特定网站的本地文件。

在我们的代码结构中使用这种差异化使得在多个站点之间重用我们的内部框架变得更加容易。

作为最后的想法,您可能会考虑查看主要框架的作用,例如 Zend Framework、Symfony 等。尽管整个框架可能超出您的预期,但框架的结构可以提供很多关于各地 PHP 开发人员正在使用的常见良好实践的见解。

关于php - 组织 PHP 类层次结构的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220347/

相关文章:

php - yii2 从数据库类覆盖 batchinsert

java - Java 中两个远程类之间的消息

java - 用包列表填充树的快速而肮脏的方法

php - 可点击获取的数据: Website Redirect

php - 刷新页面之前等待 UPDATE 完成

ios - 在 Swift 中使用 LSApplicationWorkspace

ios - 从 iOS 框架中移除代码设计

c# - 帮助重构我的 C# 代码,使其更易于维护并使用最佳编码实践

php - 剥离 HTML 标签及其内容

ios - Cocoa Touch Frameworks - 位码支持