php - 您可以在 PHP 中强制实现架构层依赖性吗?

标签 php architecture dependency-management layer

假设我有一个简单的多层应用程序架构。典型的层可能是(从底部开始向上):核心/实用程序、实体/数据、业务逻辑和 UI。类之间的依赖关系应该只在“向下”方向,例如。从 UI 到业务逻辑,而不是相反。我将如何在 PHP 中执行此操作? IDE(例如 PHPStorm)可以做到吗? Composer 能做到吗?

如果我使用 Java(一种我更熟悉的语言)工作,我通常会使用 Eclipse 和 Maven。每个层都是一个单独的项目,并会生成一个 JAR 文件。层将通过类路径相互依赖。例如,业务逻辑层(或项目)将具有可用的 util 和实体 JAR 文件,而不是 UI。如果我错误地在“向上”方向创建了一个依赖项,IDE 会将其标记为一个问题并且代码将无法编译。

我还没有找到在 PHP 中实现相同目的的方法。有什么想法吗?

最佳答案

Dependencies between classes should only be in the "down" direction, eg. from the UI to the business logic, and not the other way around. How would I go about enforcing this in PHP? Can IDEs (such as PHPStorm) do it? Can composer do it?

一般来说,答案是否定的(或者我还没有找到这样做的方法)...但是可以通过良好的工程实践来强制执行适当的分层。

例如:

  • 系统架构师可以为整个团队提供精心设计的 component diagramcomposite structure diagram
  • 系统架构师可以将整个项目分离为子项目,并为整个项目创建依赖关系图。我们使用 composer 及其 composer.json。例如,我们的实体数据层就是这样的子项目,在我们的 SOA 上具有全套映射器。服务:)
  • 系统架构师可以在每个团队和团队之间强制执行代码审查,这不仅是为了共同的代码所有权,也是为了支持适当的分层
  • 为 UI 使用模板引擎通常很有帮助(它增加了严谨性)
  • 团队的每个成员都应该了解降低系统复杂性的基本概念(向他们展示流行和成功的工程系统(如 OSI 网络模型)会很有用)

一般来说,一切都掌握在团队手中。这就是为什么 PHP 的这种自由可以让你做出伟大的事情而完全浪费。最好用解释这个众所周知的短语来结束这个答案:

With great freedom comes great responsibility:)

关于php - 您可以在 PHP 中强制实现架构层依赖性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35929536/

相关文章:

php - 如何在PHP中同时连接到2个数据库

php - 很多人访问网站会导致数据库过载吗?

iphone - 无法将ipa上传到应用商店,表示应用缺少必需的体系结构。必须至少存在以下一种架构

go - 下载模块的原始代理

angular - 在不同的 token 下提供相同的服务实例

PHP:当多个表单字段共享相同的名称和 ID 时使用 post

php - MySQL 查询太长

java - Android 应用程序中的 MVP 与事件驱动

architecture - 应用架构 : Problem with Mutable/Immutable reference

java - 如何在 Java 中要求依赖项?