enzyme / axiom
一套接口和类,用于创建领域驱动型项目。
Requires
- php: >=5.5.0
- enzyme/freckle: ^0.3.0
- enzyme/parrot: ^0.0.1
- icanboogie/inflector: ^1.4
- symfony/console: ^3.0
Requires (Dev)
- mockery/mockery: ^0.9.4
- phpunit/phpunit: ^4.8
- satooshi/php-coveralls: ^0.6.1
README
Axiom 是一组符合 PHP PSR-2 规范的接口和类,旨在帮助您完善领域驱动型项目。坚持使用 Axiom 这样的框架将有助于保持所有项目的布局、设计和实施的一致性,希望使您的工作(以及其他正在处理您代码的人)变得更加容易。
安装
composer require enzyme/axiom
包含内容
原子
原子是围绕原生 PHP 变量类型(如 int 和 string)的包装器。当服务或类期望其中一个值且不希望在代码中散布类型检查(如 if (is_string($var)) {...}
)时,会使用它们。
包
包用于携带系统中的数据,无论来自用户、API 还是外部服务。
异常
这些异常在发生内部错误时由包含的实体类集合抛出。
工厂
工厂负责创建和修改模型。它深知模型是如何构建的以及它获得的各个属性。
模型
模型表示领域中的对象。它们是独特的,有一组属性,并且是应用程序的主要资源。
接收者
接收者是系统的一部分,它们在启动命令后需要了解模型是成功还是失败地创建、更新或销毁。
报告
报告是携带消息和与领域中的某些事件或操作的结果相关联的可选细节的容器。例如,当模型创建失败时,可以返回包含错误详情的 FailureReport。
仓库
仓库是模型集合,允许系统从底层持久层存储和检索模型。
实体类
Axiom 包含一些实体类,您可以直接使用它们。这些是
原子
- IntegerAtom - 表示一个整数值。这不包括浮点数。
- StringAtom - 表示一个字符串,可以是空字符串或任何大小的字符串。
包
- ArrayBag - 简单地使用内部原生数组存储键/值对集合。
报告
- SimpleReport - 提供基本的报告实现,存储消息和可选的详细信息。
- FailureReport - 扩展简单报告,是一种更易于阅读的报告失败的方式。
仓库
- InMemoryRepository - 使用简单数组将模型集合存储在内存中。
生成器
Axiom 附带一组命令行生成器,可快速创建包含各种接口的骨架实现。
要使用命令行工具,请在项目的根目录中从控制台运行它
php vendor/bin/axiom list
当使用命令行工具创建资源时,您可以通过可选参数 --location=LOCATION
和 --namespace=NAMESPACE
或使用 axiom.yaml
配置文件(推荐)来指定命名空间和文件位置。
axiom.yaml
axiom.yaml 文件定义了生成类的结构,看起来像这样
repositories: - namespace: Acme\Repositories - location: /Users/enzyme/code/acme/Repositories factories: - namespace: Acme\Factories - location: /Users/enzyme/code/acme/Factories bags: - namespace: Acme\Bags - location: /Users/enzyme/code/acme/Bags atoms: - namespace: Acme\Atoms - location: /Users/enzyme/code/acme/Atoms reports: - namespace: Acme\Reports - location: /Users/enzyme/code/acme/Reports models: - namespace: Acme\Models - location: /Users/enzyme/code/acme/Models
当使用命令行工具生成类时,如果在 axiom.yaml
(可选)文件中找不到类的类型条目或通过命令行参数找到,则将抛出异常。
资源栈
要创建一个包含存储库、工厂、包和域资源模型的整个资源栈,可以使用make:stack
命令。此命令不接受来自命令行的命名空间和位置,因此您需要有一个axiom.yaml
文件。如果您想使用堆栈生成器但想忽略一个或多个包含的生成类,可以使用--ignore
参数。只需将--ignore
参数传递一个以逗号分隔的忽略资源类型列表的字符串,例如:--ignore="model"
或--ignore="factory,bag"
。
贡献
请参阅CONTRIBUTING.md
许可
MIT - 版权所有 (c) 2015 Tristan Strathearn,请参阅LICENSE