simon-downes / spf-contracts
定义了SPF中使用的服务的接口和特性
dev-master
2018-07-23 21:15 UTC
Requires
- php: ~7.2
This package is auto-updated.
Last update: 2024-09-07 00:27:33 UTC
README
简介
此包定义了SPF中使用的核心服务的接口和特性。例如,spf\contracts\database\DatabaseConnection
定义了访问数据库的合约,而spf\contracts\support\collections\Dictionary
定义了对键值对集合进行操作的方法。
每个目录对应一个SPF包,该包实现了该目录中定义的接口。例如,simon-downes/spf
包包含了spf\contracts\log\Logger
的实现。
命名约定
本包中的接口命名采用以下两种方式之一
- 作为单个名词(例如:
Dictionary
、DatabaseConnection
、Filter
) - 作为名词或动词后缀为"-able"(例如:
Arrayable
、Runnable
)
SPF包中这些接口的实现以Base
为前缀。
Dictionary
➡BaseDictionary
DatabaseConnection
➡BaseConnection
ConnectionManager
➡BaseConnectionManager
Profiler
➡BaseProfiler
背景
此包基于gamernetwork/yolk-contracts。有关Yolk和SPF之间的历史和关系的更多信息,请参阅simon-downes/spf-core的README。
为什么使用合约?
独立的合约包提供了两个主要好处
- 所有可用合约的快速参考点。
- 一个单一、解耦的包,通过将接口与实现分离来促进松耦合。
快速参考
将框架的所有服务都简洁地定义在接口中,为可用功能提供了简洁的文档。
而不是追踪一个大而复杂的类中哪些方法可用,您可以参考一个更简单、更干净的接口。
松耦合
SPF包为每个合约提供了默认的通常是基本实现;有时这些实现可能不足以满足特定项目的需要。
通过指定合约,代码不再与这些特定的实现耦合,您可以轻松编写更适合项目的替代方案。
同样,您可以在不修改任何消费代码的情况下在实现之间进行切换。经典的例子是能够在不修改任何使用缓存的代码的情况下切换缓存后端(例如,内存/Redis/Memcache)。