合同组件

5.2版本
维护 没有维护的

合同组件

契约组件提供了一组从Symfony组件中提取出来的抽象。欧宝娱乐app下载地址它们可以用于构建Symfony组件被证明有用的语义,而且已经有了经过实战测试的实现。欧宝娱乐app下载地址

安装

合同是作为单独的包提供的,所以你只能安装你的项目真正需要的:

1 2 3 4 5 6
美元作曲家需要symfony / ca欧宝娱乐app下载地址che-contracts美元作曲家需要symfony / ev欧宝娱乐app下载地址ent-dispatcher-contracts美元作曲家需要symfony / de欧宝娱乐app下载地址precation-contracts美元作曲家需要symfony / ht欧宝娱乐app下载地址tp-client-contracts美元作曲家需要symfony /服务合欧宝娱乐app下载地址同美元作曲家需要symfony / tr欧宝娱乐app下载地址anslation-contracts

请注意

如果在Symfony应用程序之外安装此组件,则必须使用欧宝娱乐app下载地址供应商/ autoload.php以启用Composer提供的类自动加载机制。读这篇文章为更多的细节。

使用

这个包中的抽象对于实现松散耦合和互操作性非常有用。通过使用提供的接口作为类型提示,您可以重用与它们的契约匹配的任何实现。它可以是Symfony组件,欧宝娱乐app下载地址也可以是PHP社区提供的另一个包。欧宝下载链接

根据它们的语义,有些接口可以与自动装配在类中无缝地注入一个服务。

其他的可能作为标记接口有用,用于提示使用时可以启用的特定行为自动配置或手动服务标签(或您的框架提供的任何其他方式。)

设计原则

  • 契约按域划分,每个都有自己的子名称空间;
  • 契约是PHP接口、特性、标准文档块和参考测试套件的小而一致的集合。
  • 契约必须有一个经过验证的实现才能进入这个存储库;
  • 契约必须向后兼容现有的Symfony组件。欧宝娱乐app下载地址

实现特定契约的包应该在提供部分的composer.json文件,使用欧宝娱乐app下载地址symfony / *实现公约。例如:

1 2 3 4 5 6
{“…”:“…”,“提供”:{“欧宝娱乐app下载地址symfony /缓存实现”:“1.0”}}

常见问题

这与PHP-FIG的PSRs有何不同?

如果适用,所提供的合同是建立在PHP-FIGpsr。然而,PHP-FIG有不同的目标和进程。欧宝娱乐app下载地址Symfony契约专注于提供自身有用的抽象,同时仍然与Symfony提供的实现兼容。

这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。