Хорошая библиотека PHP ORM?

Есть ли хорошая библиотека объектно-реляционного сопоставления для PHP?

Я знаю PDO / ADO, но они, похоже, обеспечивают абстрагирование различий между поставщиками баз данных, а не фактическое сопоставление между моделью домена и реляционной моделью. Я ищу библиотеку PHP, которая работает аналогично тому, как Hibernate делает для Java и NHibernate для .NET.

Посмотрите на Доктрину .

Doctrine 1.2 реализует Active Record. Доктрина 2+ – это ORM DataMapper.

Кроме того, проверьте Xyster . Он основан на шаблоне Data Mapper.

Кроме того, взгляните на DataMapper и Active Record .

Попробуйте RedBean , его необходимо:

  • Нет конфигурации
  • Нет базы данных (она создает все на ходу)
  • Нет моделей
  • и т.п.

Он даже делает все блокировки и транзакции для вас и отслеживает производительность в фоновом режиме. (Хек! Он даже делает сборку мусора ….) Лучше всего … вам не нужно писать ни одной … строки кода … Иисус, слой ORM , спас меня задницу!

Есть только два хороших: Доктрина и Пропель . Мы поддерживаем Доктрину, и она хорошо работает с Symfony . Однако, если вы ищете поддержку базы данных, помимо основных, вам придется написать свой собственный код.

Axon ORM является частью Fat-Free Framework – он имеет встроенный картограф. Нет генераторов кода. Нет глупых файлов конфигурации XML / YAML . Он считывает схему базы данных непосредственно из бэкэнд, поэтому в большинстве операций CRUD вам даже не нужно расширять базовую модель. Он работает со всеми основными механизмами базы данных, поддерживаемыми PDO : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL и т. Д.

/* SQL */ CREATE TABLE products ( product_id INTEGER, description VARCHAR(128), PRIMARY KEY (product_id) ); /* PHP */ // Create $product=new Axon('products'); // Automatically reads the above schema $product->product_id=123; $product->description='Sofa bed'; $product->save(); // ORM knows it's a new record // Retrieve $product->load('product_id=123'); echo $product->description; // Update $product->description='A better sofa bed'; $product->save(); // ORM knows it's an existing record // Delete $product->erase(); 

Более того, подключаемый модуль и соответствующий уровень доступа к данным SQL так же легки, как и каркас: 14 КБ (Axon) + 6 КБ (SQLdb). Fat-Free – всего 55 КБ.

Я сам разрабатывал Pork.dbObject. (Простая реализация PHP ORM и Active Record). Основная причина заключается в том, что я нахожу большинство ORM слишком тяжелыми.

Основная мысль Pork.dbObejct – быть легкой и простой в настройке. Нет кучи XML-файлов, всего один вызов функции в конструкторе для его привязки и addRelation или addCustomRelation для определения отношения к другому объекту dbObject.

Посмотрите: Pork.dbObject

Попробуйте Doctrine2 . Это, вероятно, самый мощный инструмент ORM для PHP. Я упоминаю об этом отдельно от Доктрины 1, потому что это совершенно другая часть программного обеспечения. Он был переписан с нуля, все еще находится в стадии бета-тестирования, но теперь он может использоваться и развиваться.

Это очень сложный ORM, но хорошо разработан. Лот магии из оригинальной Доктрины 1 исчез. Он предоставляет полное решение, и вы можете написать свой собственный ORM поверх Doctrine2 или использовать только один из его слоев .

Проверьте Outlet ORM . Это проще, чем Propel и Doctrine, и он похож на Hibernate, только с большим количеством PHP.

Я только начал с Kohana , и он кажется самым близким к Ruby on Rails, не прибегая ко всей сложности нескольких конфигурационных файлов, таких как Propel .

Мне очень нравится Propel , здесь вы можете получить обзор, документация очень хорошая, и вы можете получить ее через PEAR или SVN.

Вам нужна только рабочая установка PHP5, а Phing – запуск классов.

Я нашел классы, связанные с ORM, в библиотеке PHP Flourish .

Сделайте снимок для dORM, объектного реляционного картографа для PHP 5 . Он поддерживает все виды отношений (от 1 до 1), (от 1 до многих), (многие-ко-многим) и типы данных. Это совершенно ненавязчиво: не требуется генерация кода или расширение класса. По-моему, он превосходит любой ORM, включая Doctrine и Propel. Тем не менее, он все еще находится в стадии бета-тестирования и может значительно измениться в ближайшие пару месяцев. http://www.getdorm.com

Он также имеет очень небольшую кривую обучения. Три основных метода, которые вы будете использовать:

 <?php $object = $dorm->getClassName('id_here'); $dorm->save($object); $dorm->delete($object); 

Вы должны проверить Идиорм и Париж .

В настоящее время я работаю над phpDataMapper , который является ORM, разработанным для простого синтаксиса, такого как проект Datamapper Ruby. Он все еще находится в раннем развитии, но он отлично работает.

Пробовал ORM библиотеки Flourish .

Пока выпуск PHP 5.3 не ожидает наличия хорошей ORM. Это ограничение OO для PHP.

У меня были большие впечатления от Idiorm и Paris . Idiorm – небольшая простая библиотека ORM. Париж – это не менее простая реализация Active Record, построенная на Idiorm. Это для PHP 5.2+ с PDO. Это идеально, если вам нужно что-то простое, что вы можете просто зайти в существующее приложение.

Мой друг Киен и я улучшили более раннюю версию ORM, которую он написал до PHP 5.3. Мы существенно портировали Ruby на Rails Active Record на PHP. Нам по-прежнему не хватает некоторых ключевых функций, таких как транзакции, поддержка составных первичных ключей, еще несколько адаптеров (сейчас работают только MySQL и SQLite 3). Но мы очень близки к завершению этого. Вы можете взглянуть на PHP ActiveRecord с PHP 5.3 .

Попробуйте PHP ADOdb.

Я не могу сказать, что это лучшее, потому что я не использовал других. Но это быстро, он поддерживает Memcached и кеширование.

И это waaaay быстрее, чем DB / Select Zend Framework .

Посмотрите на LEAP ORM для Kohana . Он работает с несколькими базами данных, включая DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL и SQLite . С простой функцией автозагрузки она может работать практически с любой инфраструктурой PHP. Исходный код находится в GitHub по адресу https://github.com/spadefoot/kohana-orm-leap . Вы можете проверить учебники LEAP онлайн.

Библиотека ORM работает с нецелыми первичными ключами и составными ключами. Подключения управляются пулом подключений к базе данных и работают с необработанными SQL-запросами. ORM даже имеет построитель запросов, который упрощает создание SQL-операторов.

Вы можете проверить « Удержание», если вы чувствуете себя авантюрно. Как и Outlet , он моделируется после Hibernate .

Это еще очень рано в разработке, но пока единственными ограничениями для модели домена являются то, что классы не отмечены как final, а свойства не отмечены частными. Как только я попаду в землю PHP> = 5.3, я попытаюсь реализовать поддержку и для частных объектов.

Если вы ищете ORM, который специфически реализует парадигму Data Mapper, а не Active Record, то я настоятельно рекомендую вам взглянуть на GacelaPHP .

Особенности Gacela:

  • Преобразователь данных
  • Отображение внешнего ключа
  • Отображение ассоциации
  • Зависимое отображение
  • Наследование бетонных таблиц
  • Объект запроса
  • Отображение метаданных
  • Лёгкая и энергичная загрузка
  • Поддержка Full Memcached

Другие решения ORM слишком раздуты или имеют обременительные ограничения при разработке чего-либо удаленно сложного. Gacela устраняет ограничения активного подхода к записи, реализуя шаблон Data Mapper, сохраняя при этом минимальный взлет, используя PDO для всех взаимодействий с базой данных и Memcached.

MicroMVC имеет 13 КБ ORM, который использует только класс базы данных 8 КБ. Он также возвращает все результаты как объекты ORM и использует позднюю статическую привязку, чтобы избежать встраивания информации о таблице текущего объекта и метаданных в каждый объект. Это приводит к самым дешевым ресурсам ORM.

Он работает с MySQL , PostgreSQL и SQLite .

Бразильский ОРМ: http://www.hufersil.com.br/lumine . Он работает с PHP 5.2+. На мой взгляд, это лучший выбор для португальского и бразильского людей, потому что у него есть легкая для понимания документация и множество примеров для скачивания.

Agile Toolkit имеет собственную уникальную реализацию ORM / ActiveRecord и динамического SQL .

Введение: http://agiletoolkit.org/intro/1

Синтаксис (активная запись):

 $emp=$this->add('Model_Employee'); $emp['name']='John'; $emp['salary']=500; $emp->save(); 

Синтаксис (динамический SQL):

 $result = $emp->count()->where('salary','>',400)->getOne(); 

Хотя динамический SQL и Active Record / ORM можно использовать напрямую, Agile Toolkit дополнительно интегрирует их с пользовательским интерфейсом и пользовательским интерфейсом jQuery . Это похоже на JSF, но написанное на чистом PHP.

 $this->add('CRUD')->setModel('Employee'); 

Это отобразит AJAXified CRUD для модели Employee.

NotORM

 include "NotORM.php"; $pdo = new PDO("mysql:dbname=software"); $db = new NotORM($pdo); $applications = $db->application() ->select("id, title") ->where("web LIKE ?", "http://%") ->order("title") ->limit(10) ; foreach ($applications as $id => $application) { echo "$application[title]\n"; } 

Я работаю на miniOrm. Просто мини-ORM, чтобы как можно проще использовать Object Model & MySQL Abstraction Layer. Надеюсь, это может вам помочь: http://jelnivo.fr/miniOrm/

PHP ORM Faces для расширения PDO. См. PHP Faces Framework .

 $urun = new Product(); $urun->name='CPU' $urun->prince='124'; $urun->save(); 

Посмотрите http://code.google.com/p/lworm/ . Это действительно простая, но мощная, легкая система ORM для PHP. Вы также можете легко расширить его, если хотите.

Еще один отличный PHP ORM с открытым исходным кодом, который мы используем, – PHPSmartDb . Он стабилен и делает ваш код более безопасным и чистым. Функциональность базы данных внутри нее – это самый простой способ, с которым я когда-либо работал с PHP 5.3.

Доктрина, вероятно, лучше всего. До Doctrine DB_DataObject был по существу единственной другой утилитой, которая была открыта.