Комментарии 9
Люблю LS и люблю ORM'ы, но реализациия ORM в LiveStreet мне не по душе.
Первое, что я увидел когда смотрел ее — это то, что парсер запроса встроен в метод __call модуля а не в мэппера, что довольно странно в принципе, кроме того еще и перехватывает все обращения к другим модулям и проупскает через десяток RegExp'ов.
Во-вторых как движок БД используется не самый быстрый DbSimple, а помноженный еще и на парсер ORM'а он вообще не выдает ничего более-менее производительного.
Что касается ActiveRecord, как паттерна, выбранного для реализации, то тут, наверное, дело вкуса, хотя я был бы рад увидеть DataMapper на его месте.
Первое, что я увидел когда смотрел ее — это то, что парсер запроса встроен в метод __call модуля а не в мэппера, что довольно странно в принципе, кроме того еще и перехватывает все обращения к другим модулям и проупскает через десяток RegExp'ов.
Во-вторых как движок БД используется не самый быстрый DbSimple, а помноженный еще и на парсер ORM'а он вообще не выдает ничего более-менее производительного.
Что касается ActiveRecord, как паттерна, выбранного для реализации, то тут, наверное, дело вкуса, хотя я был бы рад увидеть DataMapper на его месте.
+4
по идеи это время ничтожно мало по сравнению с временем выполнения самого запроса к БД
0
зачем делать велосипед?? Этот ОRМ подобие на Rails. Возьмите Doctrine и будет Вам счастье
0
Спасибо за статью.
Есть несколько замечаний:
1. типы связей нужно указывать не напрямую, а через константы, например, EntityORM::RELATION_TYPE_BELONGS_TO
2. 'has_one' — это, например, когда у пользователя(основная сущность) есть сессия, и она хранится в отдельной таблице, в то время когда belongs_to соответствует категории, id которой прописан в таблице пользователя
3. Save(); совмещает и update() и add(), первый выполняется если сущность уже есть в бд, второй когда ее еще нет
4. называть таблицы в формате prefix_<module-name>_<entity-name> не обязательно, в конфиге можно прописать соответствия любому названию
5. поля также не обязательно именовать как <entity-name>_<field-name>, можно просто <field-name>
Есть несколько замечаний:
1. типы связей нужно указывать не напрямую, а через константы, например, EntityORM::RELATION_TYPE_BELONGS_TO
2. 'has_one' — это, например, когда у пользователя(основная сущность) есть сессия, и она хранится в отдельной таблице, в то время когда belongs_to соответствует категории, id которой прописан в таблице пользователя
3. Save(); совмещает и update() и add(), первый выполняется если сущность уже есть в бд, второй когда ее еще нет
4. называть таблицы в формате prefix_<module-name>_<entity-name> не обязательно, в конфиге можно прописать соответствия любому названию
5. поля также не обязательно именовать как <entity-name>_<field-name>, можно просто <field-name>
0
как меня умиляет венгерка на пыхе.
-2
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
LiveStreet и ORM