Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 31.10.2017 00:34:26

IoC контейнер, фасады и new Class

Почти во всем делаю так как вы написали, можно немного подробней "Используйте IoC или фасады вместо new Class", такого подхода? Чем лучше? Вы написали в плане тестирования... И еще я не пойму ... я повсюду от знакомых слышу что не стоит использовать статические методы у моделей... На вопрос почему мне отвечают...Слишком некрасиво... Но блин я же не создаю экз., а сразу делаю то что мне надо. на сколько я понимаю я экономлю же память.... Можете дать подсказку пожалуйста. Спасибо! Статья крутая прочитал! Еще раз спасибо!

Изменено Alukard19918 (31.10.2017 00:36:28)

Не в сети

#2 31.10.2017 10:54:10

Re: IoC контейнер, фасады и new Class

можно немного подробней "Используйте IoC или фасады вместо new Class", такого подхода? Чем лучше? Вы написали в плане тестирования...

new Class создает прямую зависимость между классами, что уже очень плохо с точки зрения архитектуры. Когда используется IoC, становится возможным использование Mockery для имитации поведения реальных объектов при тестировании кода, также можно легко заменить целый класс на другой.

На практике это означает то, что можно тестировать лишь отдельные методы, имитируя остальной функционал. Это важно потому, что ты хочешь знать какой конкретно кусочек кода не работает. Особенно важно имитировать отправку емэйлов, работу со сторонним API и т.д. Все это нельзя делать, если используешь new Class.

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

IoC против фасадов это давний спор. Для тестирования подходят и те и другие, поэтому вполне себе можно использовать как фасады, так и IoC. Но код с использованием контейнера выглядит чище, особенно для тех, кто до этого писал на вещах вроде Symfony. Да и сам подход более грамотный.

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

Изменено AlexeyMezenin (31.10.2017 11:01:13)

Не в сети

Подвал раздела