Очень похоже на фабрику
andrew-svirin opened this issue · 3 comments
Вместо
$date = $this->_dateService->instance();
$date = $this->_dateFactory->create();
Тут речь про какое-то правило конкретное?
Если речь просто про случайный пример кода, то там все нейминги условные и нет смысла на них обращать внимание (если это не основная суть правила).
Здесь речь про правило: Запрещено создавать объект даты при помощи new \DateTime()
А в примере написано, что хорошо:
В проекте для этого должен быть фабричный метод в сервисе для работы с датами.
Плохо:
$date = new \DateTime();
Хорошо:
$date = $this->_dateService->instance();
И можно было согласиться, учитывая Exception который ожидает в конструкторе класса \DateTime
, но пример гласит В текущем классе->_у нас есть приватный сервис (кстати так приватные сервисы уже не рекомендуют подчеркивать, после того, как появилось слово private)->и вызовем метод текущий екземпляр (можно было бы действие какое-то вызвать)
Про какое правило — понял.
Тут в примере акцент не на том, что класс называется dateService (может у кого-то называться и dateFacroty). И не о том, что приватные свойства надо начинать на подчеркивание. Речь о том, что в проекте должен быть централизованный метод, который инстанцирует DateTime. Нельзя юзать конструктор напрямую (лишаем себя возможности легко покрывать тестами код).
Пример можно исправить на какой-то более общий, предлагайте в PR. Можно написать и $date = $dateFactory->create();
, нам не принципиально. =)