PSR-11 容器接口 本文描述了依赖注入容器的通用接口。 设定 ContainerInterface 的目的是为了标准化框架或类库如何使用容器来获取对象和参数(本文其它部分称之为 实体 )。
出于需要,我们自己造一个轻量级的轮子,为了保持规范,我们基于 PSR-11 来实现。 PSR-11 PSR 是 php-fig 提供的标准建议,虽然不是官方组织,但是得到广泛认可。 PSR-11 提供了容器接口。他包含 ContainerInterface 和 两个异常接口,提供使用建议。
- yiisoft/di - PSR-11适应依赖注入的 container. - yiisoft/log - PSR-3 适应 Psr-3的 logging library. 更多的 PSR 兼容: PSR-3, PSR-11, PSR-16 框架核心只需要虚拟PSR实现包,您可以自由选择日志记录器和缓存实现。 更多PSR实现的兼容性预计将在稍后实现。
PSR-11(ContainerInterface):使用自己喜欢的依赖注入容器(例如Laravel、Symfony、PHP-DI),在调用MCP元素时解析应用程序类及其依赖项。 ->withContainer(ContainerInterface $container): self:提供一个符合PSR-11标准的依赖注入容器。 它使用通过->withContainer()提供的PSR-11容器来检索目标类的实例(例如,$container->get(MyMcpStuff::class))。 对于任何实际应用程序,你都应该提供自己的PSR-11容器实例,例如->withContainer(MyFrameworkContainer::getInstance()) 。
useAutowiring(true); $builder->useAnnotations(true); return $builder->build(); config/container.php里最终返回一个符合PSR 如果你不想使用 php-di ,可以在这里创建并返回一个其它符合PSR-11规范的容器实例。 构造函数注入 新建app/service/Mailer.php(如目录不存在请自行创建)内容如下: <?
安装 composer require topthink/think-container 特性 支持PSR-11规范 支持依赖注入 支持Facade门面 支持容器对象绑定 支持闭包绑定 支持接口绑定 Container
框架的结构也进行了大量的调整, 更多的 PSR 兼容: PSR-3, PSR-11, PSR-16 框架核心只需要虚拟PSR实现包,您可以自由选择日志记录器和缓存实现。
PSR-11:容器接口有容器可以实现的 2 个 get() 和 has() 方法。 PSR-11: Container interface :https://www.php-fig.org/psr/psr-11 这些方法检查bindings 数组中的条目并返回绑定值,无论它是命名空间还是单例实例
组件、Apollo 配置中心、阿里云 ACM 应用配置管理、基于令牌桶算法的限流器、通用连接池、熔断器、Swagger 文档生成 等组件,省去了自己实现对应协程版本的麻烦,Hyperf 还提供了 基于 PSR
高性能架构 - 基于 SlimPHP 和 Eloquent ORM,轻量级高性能设计 • 模块化设计 - 灵活的模块化架构,支持插件式开发和独立部署 • ️ PSR 标准兼容 - 完全遵循 PSR-7、PSR
Hyperf 还提供了 基于 PSR-11 的依赖注入容器、注解、AOP 面向切面编程、基于 PSR-15 的中间件、自定义进程、基于 PSR-14 的事件管理器、Redis/RabbitMQ 消息队列
php /** * Initial a dependency injection container that implemented PSR-11 and return the container.
php /** * Initial a dependency injection container that implemented PSR-11 and return the container.
而 PSR-11 定义了标准的 container , 让更多的 PHP 项目依赖容器实现依赖解耦, 面向接口编程.
它兼容 PSR-4, PSR-7,PSR-11 以及 PSR-15,这意味着你可以使用自己选择的其他任一供应商对这些标准的实现,来构建自己的 HTTP 消息, DI 容器,中间件,还有中间件调度器。