Laravel 扩展推荐:Advanced Container 高级容器
Advanced Container 是 Laravel 的一个包,为 Laravel 容器调用、绑定等提供语法糖。
以下是使用此包绑定服务、单例和作用域接口的示例:
// 基本绑定
bind(ServiceInterface::class)->to(Service::class);
// 单例
bind(ServiceInterface::class)->singleton(Service::class);
// 作用域实例
bind(ServiceInterface::class)->scoped(Service::class);
使用此包,您可以使用包的语法糖进行方法绑定,以执行诸如通过容器执行对服务的调用和覆盖方法行为的操作:
// 通过容器对服务的基本调用
call(Service::class)->yourMethod(100)
// 重写方法行为
bind(Service::class)->method()->yourMethod(function ($service, $app, $params) {
return $service->yourMethod($params['count']) + 1;
});
// 绑定方法行为的替代语法
bind(Service::class)->method('yourMethod', function ($service, $app, $params) {
return $service->yourMethod($params['count']) + 1;
});
使用此包,您还可以轻松地模拟测试中的方法:
bind(ServiceInterface::class)->method(
'externalApiRequestReturnsFalse',
fn () => false
);
$service = call(ServiceInterface::class);
$call = $service->externalApiRequestReturnsFalse();
$this->assertFalse($call);
此包还支持方法转发 - 查看 README 了解详细信息。 您可以在 GitHub 上了解有关此软件包的更多信息、获取完整安装说明并查看 源代码。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: