6

我只是从 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...
4

1 回答 1

4

Laravel 中的Facade只是从服务容器获取对象并在其上调用方法的一种便捷方式。

所以像这样调用 Facade :

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

就像在做:

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

由于 Facadesession从 Service Container 中解析出密钥并调用其get上的方法

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

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

在我之前的答案之一和文档页面中说明了使用服务容器相对于手动创建对象的优势,但简要说明:

  • 管理类对对象实例化的依赖的能力
  • 将接口绑定到具体类,以便在您的程序中请求接口时,服务容器会自动实例化一个具体类。更改绑定上的具体类,将更改通过所有应用程序实例化的具体对象
  • 可以创建单个实例并稍后将其取回(Singleton)
于 2016-03-17T13:14:28.550 回答