Laravel 扩展推荐:Advanced Container 高级容器

Laravel

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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-advance...

译文地址:https://learnku.com/laravel/t/61547

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

不是自带一个容器和服务对象么,这个高级容器高级在什么地方呢?

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!