Расскажите еще какие возможно фишки 5.3 или 5.4 используются если они есть, а то пока что единственный интересный момент который я увидел это работа со связами — crud, конечно стартовый файл в 260Кб это по-моему перебор. И опять же странно почему нет такой простой вещи как namespace, вроде уже «немодно» давно писать MyClass_Is_Here. А так ничего интересного как-то, давно был обзор netty вот он поинтересней оказался немного.
Нет, здесь нет никаких проблем. После R::freeze(true); остаются лишь нужные для вставки/чтения/апдейтов запросы, ничего лишнего. Другое дело, что это всегда чтение строки целиком и такая же запись.
Без фриза он постоянно использует describre, show tables и прочее. Это нужно ему для изменения схемы БД на ходу.
Данная статья только первая в цикле из 3 частей, описыващая только самые базовые вещи.
" И опять же странно почему нет такой простой вещи как namespace, вроде уже «немодно» давно писать MyClass_Is_Here"
Тут я отвечу переводом раздела PHP 5.3 namespaces на официфльном сайте.
«Я не люблю PHP namespaces, они имеют некоторые проблем. Есть ряд причин почему я не использую namespace в RedBeanPHP.
Я хочу оставить совместимость с 5.2.
Я не хочу заставлять пользователей использовать namespace, схема с синголтоном R::doSomething() достаточно мощная
Хотя я ценю работу команды PHP, я считаю выбор символа \ ошибкой. Это как эхо MSDOS в PHP.
Мне кажется, чем меньше синтаксических конструкций, тем лучше.
Не использовать namespace и фишки 5.3-5.4 даже в будущем это ппц. Думаю проект не выживет, т.к. ничего нового он не показал, все как-то сделано «для себя», ну и конечно объяснения вида «не буду делать потому что не хочу и не нравиться» это конечно круто. Идею с «bean» я видел в sugarCRM там сделана получше конечно эта идея(про код молчу). 5.2 Уже не используется наверное год как, ну не поддерживается, поэтому думаю данный фв так и останется поделкой для себя, увы и ах.
Мне кажется автору ОРМа, надо бы выполнить var_dump(get_declared_classes()) с использованием неймспейсов и без, чтобы понять, что неймспейсы это не просто синтаксическая конструкция.
А еще статичный вызов функций не просто не «мощный», а отстойный, потому что добавляет статической связанности компонентам системы.
Очень милая ОРМочка, но, увы, неприменимая иначе как для развлечения.
Из принятой в ней схемы работы «прочитали запись целиком, апдейтнули запись целиком» следует две проблемы:
Избыточность запросов и трафика: нельзя обновить один столбец, можно обновить лишь строку целиком. При большой нагрузке это становится довольно ощутимым питфоллом.
Race conditions. Это полный ахтунг, комментарии излишни, в общем-то.
В качестве флуда: то, что AR используется в ORM, не говорит о том, что он используется во всех ORM. Есть ORM и на других паттернах, та же Doctrine 2 например.
Из ссылки на вики:
The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete…
Насколько я знаю, здесь метода для INSERT/UPDATE/DELETE не принадлежат самому объекту, поэтому это и не Active Record.
Забегу вперед и опишу как содается модель в RedBeanPHP.
В начале вы работаете с bean, без привлечения моделей. Когда вам нужна модель, вы создаете класс вида Model_BeanName, в нашем случае Model_User, и там описываете дополнительную логику. Связывание bean и модели происходит автоматически.
То есть:
Вы задали мне вопрос «Какую ту же фишку? », а на самом деле хотели спросить у olegl84 про пруф?
Сформулируйте мысль точно и передайте её правильному адресату пожалуйста.
RedBeanPHP — CodeFirst PHP фреймворк