Комментарии 47
Расскажите еще какие возможно фишки 5.3 или 5.4 используются если они есть, а то пока что единственный интересный момент который я увидел это работа со связами — crud, конечно стартовый файл в 260Кб это по-моему перебор. И опять же странно почему нет такой простой вещи как namespace, вроде уже «немодно» давно писать MyClass_Is_Here. А так ничего интересного как-то, давно был обзор netty вот он поинтересней оказался немного.
0
… принеся в жертву быстродействие..
Вот это очень настораживает. Переключение режимов это хорошо, но есть ли реальные цифры сравнения или тесты? (желательно для двух режимов)
+1
Таких тестов я не проводил. Некоторая информация есть на сайте RedBean Performance
Сам автор верит, ORM работает настолько быстро, насколько правильно вы позволяете это ей делать.
Сам автор верит, ORM работает настолько быстро, насколько правильно вы позволяете это ей делать.
0
Я ответил вам ниже.
0
Нет, здесь нет никаких проблем. После R::freeze(true); остаются лишь нужные для вставки/чтения/апдейтов запросы, ничего лишнего. Другое дело, что это всегда чтение строки целиком и такая же запись.
Без фриза он постоянно использует describre, show tables и прочее. Это нужно ему для изменения схемы БД на ходу.
Без фриза он постоянно использует describre, show tables и прочее. Это нужно ему для изменения схемы БД на ходу.
0
Данная статья только первая в цикле из 3 частей, описыващая только самые базовые вещи.
" И опять же странно почему нет такой простой вещи как namespace, вроде уже «немодно» давно писать MyClass_Is_Here"
Тут я отвечу переводом раздела PHP 5.3 namespaces на официфльном сайте.
«Я не люблю PHP namespaces, они имеют некоторые проблем. Есть ряд причин почему я не использую namespace в RedBeanPHP.
Я хочу оставить совместимость с 5.2.
Я не хочу заставлять пользователей использовать namespace, схема с синголтоном R::doSomething() достаточно мощная
Хотя я ценю работу команды PHP, я считаю выбор символа \ ошибкой. Это как эхо MSDOS в PHP.
Мне кажется, чем меньше синтаксических конструкций, тем лучше.
" И опять же странно почему нет такой простой вещи как namespace, вроде уже «немодно» давно писать MyClass_Is_Here"
Тут я отвечу переводом раздела PHP 5.3 namespaces на официфльном сайте.
«Я не люблю PHP namespaces, они имеют некоторые проблем. Есть ряд причин почему я не использую namespace в RedBeanPHP.
Я хочу оставить совместимость с 5.2.
Я не хочу заставлять пользователей использовать namespace, схема с синголтоном R::doSomething() достаточно мощная
Хотя я ценю работу команды PHP, я считаю выбор символа \ ошибкой. Это как эхо MSDOS в PHP.
Мне кажется, чем меньше синтаксических конструкций, тем лучше.
0
эхо MSDOSВ Windows оно до сих пор так…
+1
Не использовать namespace и фишки 5.3-5.4 даже в будущем это ппц. Думаю проект не выживет, т.к. ничего нового он не показал, все как-то сделано «для себя», ну и конечно объяснения вида «не буду делать потому что не хочу и не нравиться» это конечно круто. Идею с «bean» я видел в sugarCRM там сделана получше конечно эта идея(про код молчу). 5.2 Уже не используется наверное год как, ну не поддерживается, поэтому думаю данный фв так и останется поделкой для себя, увы и ах.
+3
Мне кажется автору ОРМа, надо бы выполнить var_dump(get_declared_classes()) с использованием неймспейсов и без, чтобы понять, что неймспейсы это не просто синтаксическая конструкция.
А еще статичный вызов функций не просто не «мощный», а отстойный, потому что добавляет статической связанности компонентам системы.
А еще статичный вызов функций не просто не «мощный», а отстойный, потому что добавляет статической связанности компонентам системы.
+3
будет разделено на 2 расти
Опечатка в первом абзаце.
-1
Очень милая ОРМочка, но, увы, неприменимая иначе как для развлечения.
Из принятой в ней схемы работы «прочитали запись целиком, апдейтнули запись целиком» следует две проблемы:
Из принятой в ней схемы работы «прочитали запись целиком, апдейтнули запись целиком» следует две проблемы:
- Избыточность запросов и трафика: нельзя обновить один столбец, можно обновить лишь строку целиком. При большой нагрузке это становится довольно ощутимым питфоллом.
- Race conditions. Это полный ахтунг, комментарии излишни, в общем-то.
0
Я чего-то не понял, или это ActiveRecord?
+1
Это полноценный ORM.
0
en.wikipedia.org/wiki/Active_record_pattern — ну ORM, реализующий паттерн ActiveRecord.
0
Формально это не ActiveRecord, в прошлом обсуждении на хабре признали DAO
0
В комментарии выше Mox предоставил ссылку, из которой следует что ORM реализует паттер ActiveRecord.
http://en.wikipedia.org/wiki/Active_record_pattern
http://habrahabr.ru/post/150023/#comment_5079253
http://en.wikipedia.org/wiki/Active_record_pattern
http://habrahabr.ru/post/150023/#comment_5079253
0
В качестве флуда: то, что 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.
Из ссылки на вики:
The interface of an object conforming to this pattern would include functions such as Insert, Update, and Delete…
Насколько я знаю, здесь метода для INSERT/UPDATE/DELETE не принадлежат самому объекту, поэтому это и не Active Record.
0
Больше смахивает на DataMapper + Repository (на статических методах).
0
Очередной велосипед( Все фишки уже умеют все ORM'ы. Что нового?
0
Есть ли ORM в которой создание новой таблицы и новой записи сводиться к нескольким строкам?
require('rb.php');
$book = R::dispense( 'book' );
R::setup('mysql:host=localhost;dbname=mydatabase', 'user','password');
$book->title = 'Gifted Programmers';
$book->author = 'Charles Xavier';
$id = R::store($book);
require('rb.php');
$book = R::dispense( 'book' );
R::setup('mysql:host=localhost;dbname=mydatabase', 'user','password');
$book->title = 'Gifted Programmers';
$book->author = 'Charles Xavier';
$id = R::store($book);
0
Нечто очень похожее: j4mie.github.com/idiormandparis/
0
Ответ на ваш комментарий: http://habrahabr.ru/post/150023/#comment_5079371
0
Может ли idiormandparis создавать структуру базы данных не лету?
0
Пример из приведенного фреймфорка:
class User extends Model {
}
$user = Model::factory('User')
->where_equal('username', 'j4mie')
->find_one();
$user->first_name = 'Jamie';
$user->save();
Аналогичный функционал на RedBeanPHP
$user = R::findRow('user',' username =? ',
array( 'j4mie' )
);
$user->first_name = 'Jamie';
R::store($user);
Как мы видим, в RedBeanPHP можно не описывать класс модели. О том, как создаются модели в RedBeanPHP я опишу в второй части.
class User extends Model {
}
$user = Model::factory('User')
->where_equal('username', 'j4mie')
->find_one();
$user->first_name = 'Jamie';
$user->save();
Аналогичный функционал на RedBeanPHP
$user = R::findRow('user',' username =? ',
array( 'j4mie' )
);
$user->first_name = 'Jamie';
R::store($user);
Как мы видим, в RedBeanPHP можно не описывать класс модели. О том, как создаются модели в RedBeanPHP я опишу в второй части.
0
В idiormandparis мы можем отказать от моделей так же, но в этом случае мы работаем с ActiveRecord.
0
Лично для меня использование моделей это скорее плюс, чем минус. Проще добавляются фильтры и связи. Визуально код воспринимается лучше.
0
Забегу вперед и опишу как содается модель в RedBeanPHP.
В начале вы работаете с bean, без привлечения моделей. Когда вам нужна модель, вы создаете класс вида Model_BeanName, в нашем случае Model_User, и там описываете дополнительную логику. Связывание bean и модели происходит автоматически.
То есть:
$user = R::dispence('user');
$user->modelMethod();
То есть, начинаем с ActiveRecord, и при необходимости расширяемся до моделей. Мы всегда работаем по одной схеме.
В начале вы работаете с bean, без привлечения моделей. Когда вам нужна модель, вы создаете класс вида Model_BeanName, в нашем случае Model_User, и там описываете дополнительную логику. Связывание bean и модели происходит автоматически.
То есть:
$user = R::dispence('user');
$user->modelMethod();
То есть, начинаем с ActiveRecord, и при необходимости расширяемся до моделей. Мы всегда работаем по одной схеме.
0
Даёшь ту же фишку в виде специального режима работы AcriveRecord в Yii!
0
Ходят слуши что в Yii 2 будет нечто подобное.
0
Какую ту же фишку?
0
Создание структуры БД на лету исходя из обращения к данным в коде.
0
Что-то не помню чтобы на конфе 19 мая такое говорили, можно пруф?
0
Вы топик читали?
0
Да, меня интересует пруф на вот это:
>>Ходят слуши что в Yii 2 будет нечто подобное.
где об этом говорили и кто? бабки у подъезда чтоли?
>>Ходят слуши что в Yii 2 будет нечто подобное.
где об этом говорили и кто? бабки у подъезда чтоли?
0
Можете предложить в специальном разделе форума, если хочется видеть эту фичу: www.yiiframework.com/forum/index.php/forum/42-design-discussions-for-yii-20/
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
RedBeanPHP — CodeFirst PHP фреймворк