粉刺 / 粉刺
php:>=7.2.5 psr/集装箱 : ^1.1 || ^2.0
symfony/phpunit-bridge公司 : ^ 5.4@开发
自述文件
安装
$ ./ composer.phar需要粉刺/粉刺 " ^3.0 "
用法
使用 粉刺 \ 集装箱 ; $ 容器 = 新的 集装箱 ();
定义服务
//定义一些服务 $ 容器 [ '会话存储' ]=fn( $ c(c) )=> 新的 会话存储 ( “SESSION_ID” ); $ 容器 [ “会话” ]=fn( $ c(c) )=> 新的 会话 ( $ c(c) [ '会话存储' ]);
//获取会话对象 $ 阶段 = $ 容器 [ “会话” ]; //上述调用大致相当于以下代码: //$storage=新会话存储('SESSION_ID'); //$session=新会话($storage);
定义工厂服务
$ 容器 [ “会话” ] = $ 容器 -> 工厂 (fn)( $ c(c) )=> 新的 会话 ( $ c(c) [ '会话存储' ]));
定义参数
//定义一些参数 $ 容器 [ '厨师名称' ] = “SESSION_ID” ; $ 容器 [ '会话存储类' ] = “会话存储” ;
$ 容器 [ '会话存储' ]=fn( $ c(c) )=> 新的 $ c(c) [ '会话存储类' ]( $ c(c) [ '厨师名称' ]);
保护参数
$ 容器 [ 'random_func' ] = $ 容器 -> 保护 (fn()=>rand());
定义后修改服务
$ 容器 [ '会话存储' ]=fn( $ c(c) )=> 新的 $ c(c) [ '会话存储类' ]( $ c(c) [ '厨师名称' ]); $ 容器 -> 延伸 ( '会话存储' , 功能 ( $ 存储 , $ c(c) ) { $ 存储 ->... (); 返回 $ 存储 ; });
扩展容器
使用 粉刺 \ 集装箱 ; 班 Foo提供商 实施 皮普尔 \ 服务提供商接口 { 公众的 功能 登记 ( 容器 $ 粉刺 ) { //注册一些服务和参数 //在$pimple上 } }
$ 粉刺 -> 登记 ( 新的 Foo提供商 ());
获取服务创建函数
$ 容器 [ “会话” ]=fn( $ c(c) )=> 新的 会话 ( $ c(c) [ '会话存储' ]); $ session函数 = $ 容器 -> 未经加工的 ( “会话” );
PSR-11兼容性
PSR-11容器类
使用 粉刺 \ 集装箱 ; 使用 粉刺 \ 压力等级11 \ 集装箱 作为 Psr容器 ; $ 容器 = 新的 集装箱 (); $ 容器 [ '服务' ]=fn( $ c(c) )=> 新的 服务 (); $ 第11页 = 新的 Psr容器 ( $ 容器 ); $ 控制器 = 功能 ( Psr容器 $ 容器 ) { $ 服务 = $ 容器 -> 得到 ( '服务' ); }; $ 控制器 ( $ 功率因数11 );
使用PSR-11 ServiceLocator
使用 独白 \ 记录器 ; 使用 粉刺 \ 压力等级11 \ 服务定位器 ; 使用 磅/平方英寸 \ 集装箱 \ 容器接口 ; 使用 Symfony公司 \ 组件 \ 事件调度器 \ 事件调度器 ; 班 我的服务 { /** *“logger”必须是Psr\Log\LoggerInterface的实例 *“event_dispatcher”必须是Symfony\Component\EventDispatcher\EventDispatcherInterface的实例 */ 私有的 $ 服务 ; 公众的 功能 __构造 ( 容器接口 $ 服务 ) { $ 这 -> 服务 = $ 服务 ; } } $ 容器 [ “记录器” ]=fn( $ c(c) )=> 新的 独白 \ 记录器 (); $ 容器 [ “调度程序” ]=fn( $ c(c) )=> 新的 事件调度程序 (); $ 容器 [ '服务' ] = 功能 ( $ c(c) ) { $ 定位器 = 新的 服务定位器 ( $ c(c) , 阵列 ( “记录器” , '事件发送器' => “调度程序” )); 返回 新的 我的服务 ( $ 定位器 ); };
延迟引用服务集合
使用 粉刺 \ 集装箱 ; 使用 粉刺 \ 服务迭代器 ; 班 授权服务 { 私有的 $ 选民 ; 公众的 功能 __构造 ( $ 选民 ) { $ 这 -> 选民 = $ 选民 ; } 公众的 功能 canAccess(可以访问) ( $ 资源 ) { foreach公司 ( $ 这 -> 选民 作为 $ 选民 ) { 如果 ( 真的 === $ 选民 -> canAccess(可以访问) ( $ 资源 )) { 返回 真的 ; } } 返回 假 ; } } $ 容器 = 新的 集装箱 (); $ 容器 [ '投票人1' ]=fn( $ c(c) )=> 新的 SomeVoter公司 (); $ 容器 [ '投票人2' ]=fn( $ c(c) )=> 新的 其他选民 ( $ c(c) [ “身份验证” ]); $ 容器 [ “身份验证” ]=fn( $ c(c) )=> 新的 授权服务 ( 新的 服务迭代器 ( $ c(c) , 阵列 ( '投票人1' , “投票人2” ));