Цитата |
---|
Андрей Сёмин написал: А вообще D7 несколько богаче, чем ORM. |
На самом деле нет. В Bitrix это DataManager или Row-access. По сути Вы оперируете не объектами, а данными (строкой таблицы), а ORM подразумевает набор данный и методы для работы с ними.
Например, для получения и изменения пользователя (пример ORM):
Цитата |
---|
try { $user = Users::loadById(65); $user->name = 'Петр'; $user->save(); } catch ( SomeUserException $e ) { var_dump($e->getErrorMessages() ); } |
В битриксе (сохраняю имена чтобы было понятно):
Цитата |
---|
$arUser = UserTable::getRow([ 'filter' => [ 'ID' => 65 ], 'select' => ['NAME'] ]); if ( !empty($arUser) ) { $arFields = [ 'NAME' => 'Петр' ]; $res = UserTable::Update(65, $arFields); if ( !res->isSuccess() ) { var_dump($res->getErrorMessages() ); } } |
Сравните объемы кода в первом случае и во втором.
Но тут обратная сторона - например такой вариант отработает быстрее, чем объектный. Кстати, такой подход используется в Zend Framework 3 (при работе с БД, очень напоминает ту же концепцию)