#php #ооп #symfony #symfony3 #best_practice
Изучаю symfony, использую версию 3.4 Возник такой вопрос. У меня есть таблица domains со списком доменов и соответственно сущность для этой таблицы с полями таблицы и геттерами-сеттерами для них. Появилась необходимость выяснить в коде, есть ли у домена кириллические символы (русские буквы). И возник вопрос, корректно ли будет с точки зрения best practices добавить в сущность AppBundle\Entity\Domains метод вроде: public function isCyrillic(){ return preg_match('/[\p{Cyrillic}]/u', $this->name) === 1 ? true : false; } А потом добавлять в эту сущность ещё и ещё подобных методов? Или в сущности должны храниться только описания полей таблицы и геттеры-сеттеры для них? А другие методы нужно выносить в сервисы или ещё куда-то? Интересует ответ именно best practices, т.к. хочется писать код корректно и не лепить велосипеды. Нужно мнение профессионала)
Ответы
Ответ 1
Приведенный вами метод вполне укладывается в представление Enitiy. Туда подходит всё что может содержать префикс is|get|set|has и прочие. Сервисы могут иметь подобные методы, но сами они stateless, поэтому придётся на вход подавать эту самую сущность, что не очень практично. Репозитории так же сам по себе являются stateless, и служат для работы уже с самими сущностями, так что туда тоже не стоит относит подобные методы.Ответ 2
Это нарушит принцип SRP. Класс не должен иметь несколько обязанностей. Обязанность данного класс - хранить и получать данные. Метод isCyrillic добавляет классу новую обязанность. А это может привести к дублированию кода и увеличению сложности класса. Вы не сможете воспользоваться этим методом в других местах или вообще в других проектах. Поэтому я бы вынес этот метод в отдельный сервис.
Комментариев нет:
Отправить комментарий