为什么在 laravel 中创建外观而不是直接调用方法?
Why create a facade in laravel instead of calling a method directly?
我刚开始 laravel 想了解这个...
假设我们的应用程序中有一个 class:
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 in Laravel is only a convenient way to get an object from the 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 云中的服务容器是应用程序的依赖注入容器和注册表
我的 and in the doc 页面之一说明了使用服务容器相对于手动创建对象的优势,但简要说明:
- 管理class对象实例化依赖的能力
- 将接口绑定到具体 classes,这样当在您的程序中请求接口时,服务容器会自动实例化具体 class。更改绑定上的具体 class,将更改通过所有应用实例化的具体对象
- 可以创建单个实例并稍后取回它们(Singleton)
我刚开始 laravel 想了解这个...
假设我们的应用程序中有一个 class:
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 in Laravel is only a convenient way to get an object from the 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 云中的服务容器是应用程序的依赖注入容器和注册表
我的
- 管理class对象实例化依赖的能力
- 将接口绑定到具体 classes,这样当在您的程序中请求接口时,服务容器会自动实例化具体 class。更改绑定上的具体 class,将更改通过所有应用实例化的具体对象
- 可以创建单个实例并稍后取回它们(Singleton)