大多數情況下,我都會在門面背後獲得想法,以及實例化對象的細節如何隱藏在靜態調用後面。麻煩了解Laravel的門面
因此,如果我們看看這個簡單的例子在這裏:Example
我們看到這樣一些代碼的門面,它在這一點上只設置了某種形式的別名。在這一點上,看起來門面仍然對類別Superuser
一無所知。
class SuperuserFacade extends Facade
{
protected static function getFacadeAccessor() {
return 'MyAlias';
}
}
的邏輯由服務提供商粘在這裏似乎:
class SuperuserServiceProvider extends ServiceProvider
{
public function register() {
App::bind('MyAlias', function(){
return new Superuser;
});
}
}
,但它只是結合類的門面別名MyAlias
。爲什麼要打擾這個門面類和兩個單獨的文件,我們不能僅僅在服務提供者中完成所有這些邏輯嗎?或者,也可以在正面提供商那裏返回Superuser
課程?
看起來好像我們的門面沒有真正做任何事情,然後另一個文件告訴門面做什麼。爲什麼這些擔憂是分開的?
我得到了掛鉤它的邏輯,但爲什麼要將它分開,爲什麼不只是讓Facade返回'返回新的超級用戶;'而不是讓它返回別名'MyAlias'? – Rob
@Rob因爲外觀只是代理或指針,現有的項目。它不應該創建一個新的對象,只需要調用一個現有的對象。 –