Contributed by
Grégoire Paris
in #21265.
Symfony框架贯彻了很多 PHP-FIG PSR标准,诸如PSR-2 (code styling/代码书写规范), PSR-3 (Logger interface/logger接口规范), PSR-4 (autoloader/自动加载规范), PSR-6 (caching interface/缓存接口规范) and PSR-16 (simple cache规范)。
实现行业标准改进了互用性,并减少了学习曲线。这就是为何在Symfony 3.3我们决定实现另一个被称为 PSR-11: Container Interface 标准的原因。
PSR-11 定义了一个服务容器必须要去遵循(implemented)的简单API。实践中,该标准不会对你的既有Symfony程序造成冲击。对初学者来说,这个public API只定义了两个方法, get()
和 has()
,其命名与行为同Symfony中你已经知道和正在使用的别无二致。
此外,容器必须实现 Psr\Container\ContainerInterface
接口,因此我们把自己的 ContainerInterface
向它继承。再有,PSR-11标准定义了两个新的异常:ContainerExceptionInterface
(被我们的 ExceptionInterface
所实现) 和 NotFoundExceptionInterface
(被我们的 ServiceNotFoundException
实现)。
虽然这个新功能不需要你的程序做出任何改变,它将解锁其他一些Symfony功能的实现,比如更好的service locators(服务定位),后续博客中会有介绍。