PHP SQL Query строительный движок - PullRequest
2 голосов
/ 06 февраля 2011

Я ищу механизм построения запросов для PHP (, а не ORM!), Который удовлетворял бы некоторым критериям, указанным ниже. К сожалению, после изучения Doctrine, Propel, Adodb, Zend_Db и т. Д. Я не смог найти ничего, что бы действительно соответствовало профилю - они либо слишком абстрактны (мне не нужна абстракция уровня ORM), либо не поддерживают достаточное количество функций , Что мне нужно, так это библиотека, которая позволила бы мне создавать SQL-запрос программно - он мне даже не нужен для запуска, хотя это тоже будет нормально.

Я действительно хотел бы не изобретать велосипед, поэтому, если вы знаете что-то, что соответствует профилю, пожалуйста, внесите его. Если вы считаете, что один из названных выше подходит (и я пропустил это), пожалуйста, скажите мне тоже.

ДОЛЖЕН ИМЕТЬ (если в библиотеке его нет, для меня это бесполезно):

  • Поддержка PHP 5.2 (к сожалению, библиотеки с пространством имен пока не могут использоваться)
  • Поддержка программной генерации запросов, включая выражения выбора, упорядочение, ограничение, группирование, наличие, объединения, внешние объединения и т. Д.
  • Поддержка Mysql, Oracle oci8, MSSQL, DB2, Postrges
  • Поддержка построения именованных параметризованных запросов и подготовленных операторов
  • Поддержка добавления условий / динамического присоединения в любой точке
  • Поддержка типов данных, таких как datetime и т. Д. - например, правильное форматирование входящих / исходящих данных, использование надлежащих функций сравнения, если это необходимо, и т. Д. (И, конечно, правильное цитирование). Мы знаем типы всех полей в коде, поэтому библиотека должна позволять нам сообщать, что это за каждое поле.
  • Автономный (простой в использовании без множества других классов поддержки)
  • Простота расширения, а лицензия позволяет распространяться на условиях, аналогичных BSD
  • Чистый код PHP 5 (без перебора объектов в PHP 4 и т. Д.)

ХОРОШО ИМЕТЬ (мы могли бы реализовать это поверх "must have", но было бы счастливее, если бы это было уже сделано)

  • Поддержка создания экземпляров параметризованных запросов (полных и частичных), т. Е. После создания поддержки запросов, которая дает ему часть параметров и создает новый запрос с заменой этих параметров
  • Поддержка объединения двух запросов (т.е. добавление условий и таблиц из одного запроса в другой)
  • Поддержка запросов комментариев (включая их параметризацию)

БОНУС (это действительно сделало бы нас счастливыми, но мы могли бы жить без него сейчас)

  • Поддержка сериализации
  • Поддержка кэширования

Так, кто-нибудь знает такую ​​библиотеку?

1 Ответ

3 голосов
/ 25 февраля 2011

CodeIgniter - безопасная ставка для того, что вы ищете: http://codeigniter.com/user_guide/database/active_record.html

Кроме того, его можно легко расширить из своего ядра, чтобы делать то, что вам нужно. Также есть кеширование запросов (один из ваших бонусных предметов).

...