首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5: app() helper函数

Laravel 5: app() helper函数
EN

Stack Overflow用户
提问于 2015-10-09 09:34:01
回答 1查看 15.2K关注 0票数 10

为什么有人要使用这个:

代码语言:javascript
运行
复制
function flash($title)
{
    $flash = app('App\Http\Flash');

    return $flash->message('This is a flash message');
}

关于这一点:

代码语言:javascript
运行
复制
use App\Http\Flash;

function flash($title)
{
    $flash = new Flash;

    return $flash->message('This is a flash message');
}

在第一种情况下,我们将获取可用的容器实例。

在第二种情况下,我们加载Flash类并实例化它,然后在flash方法中实例化它。

我见过有人使用第一种方法,我想知道使用第二种方法是否有什么不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-09 15:38:24

如果你像你的例子一样使用它,你将得不到任何利润。但是Laravel容器在这个解析中提供了更多的功能,这是您无法通过简单的实例化对象实现的。

  1. Binding接口-您可以将特定的接口及其实现绑定到容器中,并将其解析为接口。这对于测试友好的代码和灵活性很有用-因为您可以在一个地方轻松地更改实现,而无需更改接口。(例如,到处使用一些事件接口作为目标,以便从容器解析,但接收它的实现instead.)
  2. Dependency注入-如果您将绑定类/接口并将其作为依赖项请求在某些方法/构造函数中- Laravel将自动从容器中插入它以进行you.
  3. Conditional绑定-您可以绑定接口,但根据情况解析不同的implementations.
  4. Singleton -您可以绑定object.
  5. Resolving Countable 的一些共享实例-每次容器解析smth -它都会引发一个事件,您可以在项目的其他地方订阅。

还有很多其他的练习。您可以在这里阅读更多详细信息http://laravel.com/docs/5.1/container

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33028544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档