gpt4 book ai didi

php - 为什么在 laravel 中创建一个门面而不是直接调用一个方法?

转载 作者:可可西里 更新时间:2023-11-01 13:25:53 25 4
gpt4 key购买 nike

我刚开始使用 laravel,想了解这一点......

假设我们的应用程序中有一个类:

namespace App\Tests;
class MyTest{

public function sayHello($name){
echo "Hello, $name!";
}

public static function anotherTest(){
echo "another test...";
}

}

创建外观和服务提供者与仅将其用作

use App\Tests\MyTest;

//... controller declarations here ....

public function someaction(){

$mt = new MyTest();
$mt->sayHello('John');

//or
MyTest::anotherTest();

}

//... etc...

最佳答案

A Facade在 Laravel 中,这只是从 Service Container 中获取对象的便捷方式。并对其调用一个方法。

所以像这样调用 Facade :

//access session using a Facade 
$value = Session::get('key');

就像做:

//access session directly from the Service Container
$value = $app->make('session')->get('key');

当 Facade 从服务容器中解析出 session 键并调用 get 方法时

一旦了解了 Facade 的作用,您就应该了解什么是服务容器以及使用它的好处是什么

Laravel 云中的服务容器是应用程序的依赖注入(inject)容器和注册表

使用服务容器相对于手动创建对象的优势在我的 previous answers 中有说明。在doc页,但简短:

  • 管理类对对象实例化的依赖的能力
  • 将接口(interface)绑定(bind)到具体类,以便在程序中请求接口(interface)时,服务容器会自动实例化具体类。更改绑定(bind)上的具体类,将更改通过所有应用实例化的具体对象
  • 可以创建单个实例并稍后取回它们(Singleton)

关于php - 为什么在 laravel 中创建一个门面而不是直接调用一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36061436/

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