По большей части я понимаю идею за фасадом и то, как детали создания экземпляра объекта скрыты за статическими вызовами.
Итак, если мы посмотрим на этот простой пример здесь: Пример
Мы видим подобный код для фасада, который на данный момент просто устанавливает своего рода псевдоним. На данный момент кажется, что фасад еще ничего не знает о классе 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
?
Кажется, что у нас есть фасад, который на самом деле ничего не делает, а затем другой файл сообщает этому фасаду, что делать. Почему эти проблемы были разделены?