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(服务定位),后续博客中会有介绍。