Andrii
Код стаил, архитектура симфони приложений, то как принято в коммерческих проектах сейчас
Стиль - PSR12 + свои требования, как организовывать - смотрим symfony framework, дальше читаем про архитектурные подходы и строим своего монстра. В каждой компании делают по своему. Даже стиль кода может быть не PSR12. Проще всего самому написать бандл для интеграции чего-то и там придёт понимание
Nikolay
Код стаил, архитектура симфони приложений, то как принято в коммерческих проектах сейчас
В симфони принят например yoda-style для условий, но это не значит, что это нормальный подход. Так что все по разному пишут
Nikolay
а чем плох yoda-style?
Тем, что это это не логично с точки зрения чтения слева направо
Михаил
А кто сказал что мы читаем код слева-на-право?
Михаил
Иуда стиль нужен для того, что бы не допустить ошибки «присваивая вместо сравнения» И всё
Pavel
Тем, что это это не логично с точки зрения чтения слева направо
сомнительный минус, учитывая что в условии может быть 3-4-этажый вызов метода. Так ты сразу видишь на какой тип значения идет проверка. к тому же безопаснее с точки зрения невнимательных прогеров
Михаил
Это как? Можно немного раскрыть суть ?
Есть определённые вещи, которые реализованы в фреймворке для того, что бы люди с разным уровнем могли просто понимать проект и структурировать его так, что бы он был понятен для остальных. Если я хочу настроить фаервол - я не буду настраивать это в контроллерах, а полезу в symfony security. Если я хочу сделать background операцию, то я не буду настраивать консольную команду, я скорее всего буду использовать symfony messendger Если я хочу прослушивать события - я не буду свои коллбеки лепить, я обращусь к ивент сабскрайберам Так же многие вещи связанные с di. Короче нужно учиться не лепить свои костыли или использовать сторонние вещи, а пользоваться стандартными и общепринятыми вещами.
Pavel
открываешь главную страницу доки и там прям по главам видно
Andrii
Уже PER, а не PSR12
А, нуда, точно, php8 фичи и все такое :)
Pavel
А, нуда, точно, php8 фичи и все такое :)
охереть конечно, через пару месяцев уже 8.4 выходит... капец быстро время летит
Aleksandr
больше кода, меньше рассуждений!
Михаил
Да ничо, после релиза ещё пару месяцев трогать его не надо
Михаил
больше кода, меньше рассуждений!
Я один это с акцентом прочитал?
Aleksandr
😀
Роман
Я ещё на 8.2 пишу 🗿
Rus
так а что там в 8.3 интересного или критичного для обновления проекта на symfony?
Kirill
Кому нужен 8.3, когда уже 8.4 можно тыкать?
Михаил
Ахахахахахаахахах
Kirill
кто-то увидел то, что в 8.4 свойства наконец появились?
Михаил
Короче единственная полезная фича phpstorm скоро отомрёт)
Павел
Ахахахахахаахахах
ПропертиХук крутая фича. Но мозг нужно будет перестроить
Alexey Mishurovskiy
ПропертиХук крутая фича. Но мозг нужно будет перестроить
зато будет сильно проще читать java kotlin и c#
Alexey Mishurovskiy
это вам не сраный питон
Павел
зато будет сильно проще читать java kotlin и c#
Ну и гавнеца прибавится тоже
Alexey Mishurovskiy
Ну и гавнеца прибавится тоже
да почему.. будет стандарт на уровне языка, а не set*\get*
Михаил
Да, просто как-то всё в кучу. Надо пробовать, пока не понятно что читаемее. Но с точки зрения интерфейса разделить проперти и методы - здравое решение. Правда если раньше ты делал get или set в проперти - ты сразу знал что данные будут без изменений. А вот щас непонятно. С другой стороны сейчас getName setName правят балом и там та же проблема.
Михаил
с c# та же проблема при чтении, там такие же гет сеттеры ещё и с модификаторами
Alexey Mishurovskiy
с c# та же проблема при чтении, там такие же гет сеттеры ещё и с модификаторами
ну вот когда видишь после пыха overload там вообще башню рвет
Павел
да почему.. будет стандарт на уровне языка, а не set*\get*
Там помимо этого куча сайд эффектов еще идет. Какой то видос смотрел, чет правда уже забыл детали, там вплоть до вируальных свойств. Т.е. это дает не просто замену геттерам и сеттерам
Михаил
Там помимо этого куча сайд эффектов еще идет. Какой то видос смотрел, чет правда уже забыл детали, там вплоть до вируальных свойств. Т.е. это дает не просто замену геттерам и сеттерам
эти свойства ещё и работают и при инкапсуляционных вызовах. Теперь даже внутри класса нужно будет всё просматривать. Если кто-то объявил сеттер - то можно просто сделать новый сеттер, с другими правилами и с другим именем. А как тут?
Михаил
Но зато в эти get set теперь можно увести те мутации, которые точно нужно соблюдать, общие случае короче
Михаил
ох блин, а ещё и проблема миграции кода. Всё в проекте перевести на свойства - не проблема, утилиту написал и всё. А вот библиотеки. И всё будет в полном хаосе
Роман
это же и сейчас есть
Kirill
именно семантически, т.к. по факту выполняют полностью идентичную роль
Kirill
просто реализация через методы
Михаил
я про переход от $this->setProp на $this->prop
Kirill
я про переход от $this->setProp на $this->prop
ну setProp в принципе атавизм древний
Kirill
в 99% чуваки просто с пхп 5 не перестроились, что пишут их
Михаил
хотя этот переход надо только в каких то Dao или Dto сделать, в доменных сущностях вцелом сеттеры не нужны, нужны только бизнес методы
Павел
номрализация, валидация, что угодно
Kirill
Там может быть логика
ну вот поэтому 1% под неё и оставил)
Роман
я про переход от $this->setProp на $this->prop
в ларе и щас так и когда свойство класса пишешь тоже самое
Павел
ну вот поэтому 1% под неё и оставил)
Нормально ты статистику ведешь)))
Михаил
А вот геттеры - на текущий момент единственный нормальный вариант инкапсулировать состояние.
Kirill
да я просто не помню когда мне требовалось писать логику во время установки чего-либо
Kirill
не, бывают кейсы, конечно
Kirill
даже могу припомнить
Kirill
но оооочень редко
Павел
да я просто не помню когда мне требовалось писать логику во время установки чего-либо
Лови: обрезка текста свойств сущности, чтобы не выльтела 500 при записи в базу, чего не делают наверное никто))
Kirill
и не её зона ответсвенности
Павел
так это не проблема сущности же
А чья ) если она последняя точка обработки данных.
Павел
нет же, ещё персистент слой
Т.е. ты в персистенте будешь ставить логику поставить три точки вместо последнего поганичного слова?
Kirill
хотя... в теории если завезти в тот же стан какой-нибудь тип string<0, 500>, то тогда её будет
Михаил
нет же, ещё персистент слой
то есть ты получишь эксепшен о том что данные не правильны только на момент созранения данных а не на моменте установки?
Михаил
Fail fast это лучше
Павел
Но текст тоже имеет границы, и int
Павел
Опять же частый кейс, что приходит null и '' и нормализовать к null после trim если пустая строка
Павел
Чтобы в БД не было двойственности данных и не делали в запросах is null or ''
Михаил
Опять же частый кейс, что приходит null и '' и нормализовать к null после trim если пустая строка
или какой-то dao http запроса и в нём человек сетит url - это тоже нужно приветси к нормальному виду
Михаил
или метод (get, post) нужно привести к upper case
Павел
Короче нормализаций может быть немалое кол-во
Михаил
короче таких мелких ситуаций полно
Михаил
когда по принципу единой ответственности, и по принципу информационного эксперта (да и для собственной спокойности) ты хочешь делать преобразования прям внутри объекта
Павел
@SerafimArts Кстати вот опять же В сеттер можно прокинуть сервисы, которые нужны сеттеру для той же нормализации. В пропертиХук уже хер