Нужен простой ORM или DBAL для существующего приложения PHP.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Нужен простой ORM или DBAL для существующего приложения PHP.

Сообщение Anonymous »

Я работаю над расширением существующего приложения PHP. К сожалению для меня, существующее приложение представляет собой беспорядок. Это все спагетти-код с необработанными вызовами mysql_*. Стон. Ни в коем случае я не собираюсь делать это в тех частях, которые я расширяю.

Итак, я ищу простую ORM DBAL, которую я могу легко вставить и начать использовать. Желаемые возможности:
  • Должен работать с существующей схемой базы данных. Желательно с минимальной дополнительной настройкой или без нее. Существующая схема базы данных имеет то же качество, что и существующий код PHP (нет разумных соглашений об именах, не нормализована и т. д.). Я не хочу тратить дни на преобразование схемы базы данных вручную в свойства аннотированных объектов в стиле Doctrine 2.
  • Он должен работать вместе с существующими необработанными запросами mysql_*. Я понятия не имею, как ведут себя увлажняющие ORM, такие как Doctrine 2 или Propel, когда скрипты вручную манипулируют данными в базе данных за их спиной, но я предполагаю, что это некрасиво.
  • Он должен работать на PHP. 5.2.х. Мне бы хотел использовать PHP 5.3, но мне совершенно неинтересно просматривать существующие 125 тысяч строк кода-спагетти, чтобы убедиться, что он работает на PHP 5.3.
  • Отношения не обязательны. В тех немногих местах, где мне нужно получить реляционные данные, я буду рад вызвать дополнительный метод find() или query() или что-то еще самостоятельно.
  • Бонусные баллы, если есть поддержка триггеров (например, beforeSave, afterSave). Это не обязательно, но приятно иметь.
Редактировать: Кто-то избавил меня от страданий. Я только что узнал, что 125 тысяч строк спагетти-кода также меняют схему базы данных. Например, добавьте где-нибудь дополнительную опцию, и куча операторов ALTER TABLE начнет работать. Я, вероятно, мог бы заполнить этой кодовой базой годовой объем TheDailyWTF. Итак, еще одно требование:
  • Должна быть возможность автоматически справляться с изменением схемы базы данных (например, добавлением столбцов).
Я рассматривал несколько решений, но не уверен, насколько хорошо они будут работать с учетом требований. Doctrine 2, RedBeanPhp и им подобные требуют PHP 5.3, поэтому их нет. Существует устаревшая версия RedBeanPhp для PHP 5.2.x, но я не знаю, будет ли она работать с неупорядоченной существующей схемой базы данных. NotORM выглядит нормально для получения данных, но я не знаю, можно ли его настроить для существующей схемы базы данных и как можно легко вернуть данные обратно в базу данных.

В идеале хотелось бы чего-то простого. Например:

Код: Выделить всё

$user = User::find($id);
$user->name = 'John Woo';
$user->save();
Или:

Код: Выделить всё

$articles = ORM::find('article')->where('date' => '2010-01-01');
foreach ($articles as $article) {
echo $article->name;
}
Любые советы или даже альтернативные решения приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/472 ... ng-php-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»