gpt4 book ai didi

php - 拉维尔 5 : app() helper function

转载 作者:太空狗 更新时间:2023-10-29 15:37:16 25 4
gpt4 key购买 nike

为什么有人要用这个:

function flash($title)
{
$flash = app('App\Http\Flash');

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

关于这个:

use App\Http\Flash;

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

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

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

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

我见过有人使用第一种方法,我想知道使用第二种方法是否有任何区别。

最佳答案

如果您像示例中那样使用它 - 您将不会获得任何利润。但是 Laravel 容器在解决这个问题上提供了更多的功能,这是您无法通过简单的实例化对象实现的。

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

还有许多其他实践...您可以在此处阅读更多详细信息 http://laravel.com/docs/5.1/container

关于php - 拉维尔 5 : app() helper function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com