Можно ли использовать Laravel 5 без фасадов?

Я читал, что фасады не годятся. Я понятия не имею, правильно ли это. Я также читал, что Laravel использует многие из них. Далее я читал, что их можно отключить в Lumen. "Выключить" может быть не то слово.

Вы должны использовать Laravel с фасадами? Если я не использую фасады, значит ли это, что мне вообще не следовало выбирать Laravel?


person johnny    schedule 24.05.2016    source источник


Ответы (2)


Вас не заставляют использовать фасады.

Ознакомьтесь с документацией по адресу https://laravel.com/docs/5.1/facades.

Просто используйте помощника app, чтобы получить то, что вам нужно.

app('router');
app('config')

или вы можете использовать IoC. Есть много способов.

person Danny    schedule 24.05.2016
comment
Это как-то противоречит цели выбора Laravel для начала? - person johnny; 24.05.2016
comment
@johnny Нет, это не так. Это похоже на использование ORM, вы выбираете! :) - person Danny; 24.05.2016
comment
@johnny, нет, это просто синтаксический сахар, облегчающий процесс обучения. Для многих знакомство с концепцией IoC и инверсией зависимостей на ранних этапах обучения поставило бы Laravel в один ряд с Symfony с точки зрения простоты понимания. Конечно, вместе с этим «сахаром» приходит изрядное количество самоуверенного кода, который правильно или неправильно также облегчает обучение новичкам в Laravel, именно здесь фреймворк сияет (и терпит неудачу для некоторых). - person David Barker; 24.05.2016
comment
@DavidBarker Значит, для некоторых это означает много волшебства, и им все равно, а для некоторых это означает, что они могут пропустить сантехнику и работать над проблемами? - person johnny; 24.05.2016
comment
@johnny да именно так. Тогда есть те, кто любит делать свою собственную сантехнику. - person David Barker; 24.05.2016

На самом деле вам не нужно использовать фасады в вашем приложении. Если вы посмотрите на ссылку на класс фасадов для каждого фасада, вы можете найти класс в этот стол. Так, например, вместо фасада DB вы можете внедрить Illuminate\Database\DatabaseManager и использовать его метод.

Используя фасад, вы бы использовали:

DB:beginTransaction();

и вводя класс и назначая его свойству класса, вы можете написать:

$this->db->beginTransaction();
person Marcin Nabiałek    schedule 24.05.2016