Guard
mago guard 在 PHP 项目中强制执行架构边界和结构约定。它涵盖了与 deptrac 和 arkitect 相同的范围,集成于一个二进制文件中,运行在 Mago 的解析器之上。
该工具有两部分:边界 guard 验证分层之间的依赖,而结构 guard 在符号自身上执行约定。
边界 guard
边界 guard 验证依赖边。它确保应用各部分之间只通过你明确允许的方式互相调用,从而让领域层不被基础设施泄露污染,UI 也无法越过应用层。
典型规则:
Domain层不能依赖任何其他层。UI层可以依赖Application,但反过来不行。- 某个特定模块只允许使用一份获批的库列表。
结构 guard
结构 guard 在符号自身上执行约定:它们的名称、修饰符、父类型、attribute,以及它们所在命名空间的形态。
典型规则:
App\Http\Controllers中的所有类都必须是final且以Controller结尾。Domain下的接口必须以Interface结尾。- 某个命名空间只能包含
enum定义。