2014-02-09 5 views
1

Я хотел бы, чтобы кто-то объяснил концепцию и использование статических фасадов в каркасе Laravel 4.Laravel Статические фасады и сцепление

По моему мнению, это приводит к жесткой связи и скрытым зависимостям, поскольку вызываются методы статического класса. Я прав?

+0

Laravel имеет общественный форум, документацию и много материала ресурсов доступные через вашу любимую поисковую систему. – Lee

+0

Спасибо, я посмотрел на документы и не совсем понял. Я на самом деле не пытаюсь узнать Laravel и не успеваю прорыть всю информацию, просто пытаясь понять, как она использует инъекцию зависимости. Я также читал это: http://www.nathandavison.com/article/16/using-dependency-injection-and-ioc-in-laravel-4-controllers, поэтому я задал вопрос. – Ron

ответ

0

Нет, это не совсем правильно. Методы статического класса: не вызывается.

Что происходит, когда вы расширяете Facade, вы устанавливаете класс, который хотите разрешить, из контейнера DI. Фасад использует __callStatic, чтобы затем вызвать методы экземпляра в классе, разрешенном из контейнера.

Итак, вы не плотно связаны, потому что вы можете просто указать другую реализацию в контейнере, которую ваш Фасад возьмет и будет использовать вместо этого.

Кроме того, статические методы класса не вызываются, потому что все проваливается к __callStatic который вызывает методы экземпляра из любого класса был разрешен от DI контейнера

Смежные вопросы