🐴
про ОРМ тоже смотрел?
Sergei
Нет пока. Сейчас зажжом.
🐴
ну вот там треш имхо
Sergei
Orm не мой конёк, мне будет легко раскритиковать :)
Sergei
Во, теперь я знаю что hybernate - это orm.
Sergey
а что ты думал это такое?)
Sergei
Я знал что оно как-то про java, и в целом связано с сериализацией.
Sergei
В целом - "слышал название в контексте java".
Sergey
Doctrine - клон хибернейта на php
Sergey
если что
Sergei
О, ок!
Sergei
В php есть декораторы/аннотации/атрибуты? (как в java pyhton c#)?
🐴
аннотации есть
🐴
ну
🐴
в каком-то смысле
🐴
их можно прочитать через reflection
Sergei
И Doctrine по ним и определяет мапинг полей в таблицы?
🐴
да
Sergei
Ок, ожидаемо.
🐴
как вариант
🐴
что такое декораторы и атрибуты я не знаю
Sergei
Думаю, та же фигня. Когда к методам и данным класса можно присоединить объект, как-то их описывающий.
🐴
такого я не знаю
🐴
но звучит похоже на аннотации
Sergei
[Table("users")] Class User{ [Field("user_name")] string username; [Field("user_age")] int age; }
🐴
а
🐴
ну по сути тоже самое
🐴
только в пыхе это через reflection
🐴
внутри они ни что иное как док-блоки, комментарии
🐴
на которые навешана логика, которая их парсит через рефлекшн
Sergei
только в пыхе это через reflection
В других системах тоже.
Sergei
на которые навешана логика, которая их парсит через рефлекшн
Вот вроде так оно и работает например в C#.
Sergei
Кругом всё одно и то же :/
🐴
а это c# код?
Sergei
Да
🐴
комменты в квадратных скобках?
Sergei
Ага
🐴
и эти люди запрещают мне ковыряться в носу
Sergei
При этом комменты эти - на самом деле экземпляры объектов, которые можно выципить через рефлекшен.
Sergei
Типа берёшь неких неведомый объект, получаешь его тип, далее через рефлекшен ходишь по дереву типа по всем его полям; про каждое поле спрашиваешь, есть ли ассоциированные с ним объекты?
Sergei
Положим, есть; провеяшь, а этот "ассоциированный объект" (атрибут) случайно не типа Field?
Sergei
Положим, он и есть Field.
Sergei
Ок, тогда у него спрашиваешь например getName() - и вот теперь тебе известно, что неведомую фигню нужно сохранить в таблицу данных в поле с именем "user_name".
Ale
ну в пхп еще можно через .yml файлы
Ale
или xml/php
Ale
тогда в самой сущносте вообще нет никаких отсылок к доктрине
Sergey
аминь
Sergey
рекомендованный вариант - xml
Sergey
аннотации - это для ленивых (как я)
Sergey
> Ок, тогда у него спрашиваешь например getName() - и вот теперь тебе известно, что неведомую фигню нужно сохранить в таблицу данных в поле с именем "user_name". у меня нет геттеров, шах и мат
Sergey
о чем разговор? о том что дата мэпперы не нужны?
Sergei
О том как в разных языках устроены orm, и почему это хорошо/плохо/никак.
🐴
ну егор-то топит за active record
🐴
за какой-то ультраортодоксальный его вариант
Evgeniy
нету generic
Evgeniy
reflection есть в php но сделан он медленно
Evgeniy
annotation вообще через жопу сделаны по сравнению с java
Sergei
По-моему оно везде медленно
Evgeniy
в php annotation на уровне языка НЕТ
Sergei
В Go аннотации вообще в виде "строка".
Evgeniy
есть просто договоренность фигарить их в коменты обычные)
Sergei
Люди как-то живут.
Evgeniy
в php аннотация в обычном комментарии
Sergei
есть просто договоренность фигарить их в коменты обычные)
Стоп, а вы через рефлекшен умеете комменты читать? О_о
🐴
да
Evgeniy
который никак языком не обрабатывается его надо отдельно парсить
Sergei
🐴
как минимум, специально оформленные комменты
🐴
а так хз на самом деле
Sergei
Вы суровые :)
Evgeniy
я просто и на java работал и на php :D
Ale
да, только doc comments
Ale
причем на самом деле разные парсеры по-разному относят их к разным нодам
Ale
с полями класса еще более-менее ясно
Sergey
честно-честно нет?)
ну ладно... пока есть
Sergei
про ОРМ тоже смотрел?
Посмотрел. По существу услышал следующее: "если вы экспозите внутренние данные объекта наружу - то это обычно херово". Соглашаюсь с автором.
Sergei
Там дальше были обсёждения типа "а что если не SQL, а NoSQL? Или json? Или XML?" - вот оно ровно всё про то же: экспозить наружу данные объекта под предлогом "for greater good" - вот оно это плохо. Сложно с этом несогласиться.
Sergei
Почему никто не протестует? :)