• Вхождение цифр в строку не более n-раз

    m_z
    @m_z
    ^(?:[a-z]*[0-9]?[a-z]*){0,3}$
    но нужно все кейсы проверить.
    Ответ написан
    7 комментариев
  • Наследование сущностей через Superclass в Doctrine 2, почему поля копируются в наследников?

    m_z
    @m_z
    Выполнение doctrine:generate:entities нужно вообще избегать. Эта команда используется только для старта и позволяет конвертировать существующую структуру базы данных в сущности. В дальнейшем сущности нужно править только руками.
    Ответ написан
    Комментировать
  • PDO или ORM в PHP?

    m_z
    @m_z
    Ошибка в понимании разницы между PDO и ORM, вопрос звучит как «ложка или тарелка за ужином»

    PDO это DBAL — простой интерфейс для работы с базой данных, который предоставляет одинаковые методы для работы с различными базами данными, поэтому вам не надо задумываться с какой именно БД мы работаем в текущий момент.

    ORM — из википедии — is a programming technique for converting data between incompatible type systems in object-oriented programming languages. Т.е. техника конвертации обычных таблиц, как в реляционных бд, в объекты. Это и очевидно, с обычными массивами работать трудно, а FETCH_OBJECT это всеравно не ОО-подоход.

    Одна технология дополняет другую.

    Теперь про propel и doctrine.

    Doctrine 1 мне не понравился потому, что в него добавили кучу непонятных фич и в конечном результате вышла каша, трудная для изучения (для примера, три способа извлечения данных из сущности, непонятная абстракция 'Table').

    Propel. скорее мертв, чем жив. Его поднял и поддерживает сейчас только один человек. Не понравился тем, что на одну сущность генерируется 6 непонятных классов, да и сам процесс генерации надоедает

    Doctrine 2 это практически hibernate для php %) по сравнению с первой версии его очистили от мусора, сделали его data mapper-ом. Что нравится — это понятный интерфейс, чистые доменные объекты (сущности) — весь конфиг можно вынести в аннотации/xml/yaml. В результате все модели выглядят так же просто, как и class news {private $title; private $text; }. Остановился на нем.
    Ответ написан
    Комментировать