답변:
교리를 보라 .
Doctrine 1.2 는 Active Record를 구현합니다. Doctrine 2+ 는 DataMapper ORM입니다.
또한 Xyster를 확인하십시오 . 데이터 매퍼 패턴을 기반으로합니다.
또한 DataMapper와 Active Record를 살펴보십시오 .
RedBean을 사용해보십시오 .
또한 모든 잠금 및 트랜잭션을 수행하고 백그라운드에서 성능을 모니터링합니다. (지옥! 심지어 가비지 컬렉션이 .... 않음) 무엇보다도 ... 당신이 코드 한 ... 라인 ... 예수 작성하지 않아도 이 , ORM 층을 , 엉덩이 저를 저장!
교리 와 프로 펠의 두 가지 좋은 것이 있습니다 . 우리는 교리를 선호하며 Symfony 와 잘 작동합니다 . 그러나 주요 지원 이외의 데이터베이스 지원을 찾고 있다면 자체 코드를 작성해야합니다.
Axon ORM은 Fat-Free Framework 의 일부입니다 . 즉석 매퍼가 특징입니다. 코드 생성기가 없습니다. 바보 같은 XML / YAML 구성 파일이 없습니다. 백엔드에서 직접 데이터베이스 스키마를 읽으므로 대부분의 CRUD 작업에서는 기본 모델을 확장 할 필요조차 없습니다. MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL 등 모든 주요 PDO 지원 데이터베이스 엔진 과 작동합니다 .
/* 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 데이터 액세스 계층은 프레임 워크만큼 가볍습니다 (14KB (Axon) + 6KB (SQLdb)). 무 지방은 55KB입니다.
$product->load('product_id=123')
예제 와 같은 것을 볼 때 항상 걱정합니다 .
$product->load(array('product_id=:id',array(':id'=>123)));
나는 스스로 Pork.dbObject를 개발하고 있습니다. (간단한 PHP ORM 및 Active Record 구현) 주된 이유는 대부분의 ORM이 너무 무겁다는 것을 알기 때문입니다.
Pork.dbObejct의 주요 생각은 가볍고 설정하기 쉽다는 것입니다. XML 파일은 없으며 생성자에서 하나의 함수 호출만으로 바인딩하고 다른 dbObject와의 관계를 정의하기위한 addRelation 또는 addCustomRelation이 있습니다.
보기 : Pork.dbObject
Doctrine2 사용해보십시오 . 아마도 PHP를위한 가장 강력한 ORM 도구 일 것입니다. 나는 완전히 다른 소프트웨어이기 때문에 Doctrine 1과 별도로 언급하고 있습니다. 처음부터 다시 작성되었지만 아직 베타 단계에 있지만 지금은 사용할 수 있고 개발되었습니다.
매우 복잡한 ORM이지만 잘 설계되었습니다. 독창적 인 교리 1의 많은 마법이 사라졌습니다. 완벽한 솔루션을 제공하며 Doctrine2 위에 자체 ORM을 작성 하거나 해당 계층 중 하나만 사용할 수 있습니다 .
콘센트 ORM을 확인하십시오 . Propel 및 Doctrine보다 간단하며 최대 절전 모드와 비슷하게 작동하며 더 많은 PHP 느낌이 있습니다.
당신은 바보와 파리를 확인해야합니다 .
PHP 5를위한 객체 관계형 맵퍼 인 dORM 을 쏘십시오 . 모든 종류의 관계 (1 대 1), (1 대 다), (다 대 다) 및 데이터 유형을 지원합니다. 전혀 눈에 거슬리지 않습니다. 코드 생성이나 클래스 확장이 필요하지 않습니다. 제 생각에는 교리와 프로 펠이 포함 된 모든 ORM보다 우수합니다. 그러나 아직 베타 테스트 중이며 향후 몇 개월 내에 크게 변경 될 수 있습니다. http://www.getdorm.com
또한 학습 곡선이 매우 작습니다. 사용할 세 가지 주요 방법은 다음과 같습니다.
<?php
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
현재 phpDataMapper 에서 작업하고 있는데 , Ruby의 Datamapper 프로젝트와 같은 간단한 구문을 갖도록 설계된 ORM입니다. 아직 초기 개발 단계에 있지만 훌륭하게 작동합니다.
나는 Idiorm과 Paris 와 함께 훌륭한 경험을 했습니다 . 관용구는 작고 간단한 ORM 라이브러리입니다. 파리는 Idiorm을 기반으로하는 똑같이 간단한 Active Record 구현입니다. PDO가 포함 된 PHP 5.2 이상용입니다. 기존 응용 프로그램에 넣을 수있는 간단한 것을 원한다면 완벽합니다.
ORM of Flourish 라이브러리를 사용해 보았습니다 .
PHP 5.3 릴리스까지는 좋은 ORM을 기대하지 않습니다. PHP의 OO 제한입니다.
저의 친구 키엔과 저는 PHP 5.3 이전에 작성한 ORM의 이전 버전을 개선했습니다. 우리는 본질적으로 Ruby on Rails의 Active Record 를 PHP 로 포팅했습니다 . 트랜잭션, 복합 기본 키 지원, 몇 가지 더 많은 어댑터 (현재 MySQL 및 SQLite 3 만 작동)와 같이 원하는 주요 기능이 여전히 부족합니다. 그러나 우리는이 물건을 마무리하는 데 매우 가깝습니다. PHP 5.3 에서 PHP ActiveRecord를 살펴볼 수 있습니다 .
PHP ADOdb를 사용해보십시오.
나는 다른 것을 사용하지 않았기 때문에 그것이 최고라고 말할 수는 없습니다. 그러나 빠르며 Memcached 및 캐싱을 지원합니다 .
또한 Zend Framework의 DB / Select 보다 빠릅니다 .
Kohana 의 LEAP ORM을 살펴보십시오 . DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL 및 SQLite를 포함하여 많은 데이터베이스에서 작동합니다 . 간단한 자동로드 기능을 사용하면 거의 모든 PHP 프레임 워크에서 작동 할 수 있습니다. 소스 코드는 https://github.com/spadefoot/kohana-orm-leap의 GitHub 에 있습니다 . LEAP의 자습서를 온라인으로 확인할 수 있습니다 .
ORM 라이브러리는 정수가 아닌 기본 키 및 복합 키와 함께 작동합니다. 연결은 데이터베이스 연결 풀을 통해 관리되며 원시 SQL 쿼리와 함께 작동합니다. ORM에는 SQL 문 작성을 매우 간단하게 만드는 쿼리 작성기도 있습니다.
모험심이 있다면 Repose 를 확인할 수 있습니다 . Outlet 과 마찬가지로 Hibernate를 모델로 합니다.
아직 개발 초기 단계이지만 도메인 모델에 대한 유일한 제한 사항은 클래스가 final로 표시되지 않고 속성이 private으로 표시되지 않는다는 것입니다. PHP> = 5.3의 땅에 들어가면 개인 속성에 대한 지원도 구현하려고 시도 할 것입니다.
구체적으로 Active Record가 아닌 Data Mapper 패러다임을 구현하는 ORM을 찾고 있다면 GacelaPHP를 살펴 보는 것이 좋습니다 .
가 셀라 특징 :
다른 ORM 솔루션은 원격으로 복잡한 것을 개발할 때 너무 부풀어 지거나 부담스러운 한계가 있습니다. Gacela 는 데이터베이스 및 Memcached와의 모든 상호 작용에 PDO 를 사용하여 부풀림을 최소화하면서 데이터 매퍼 패턴을 구현함으로써 활성 레코드 접근 방식의 한계를 해결합니다 .
MicroMVC에는 8KB 데이터베이스 클래스 에만 의존 하는 13KB ORM 이 있습니다. 또한 모든 결과를 ORM 객체로 반환하고 최신 정적 바인딩을 사용하여 현재 객체의 테이블 및 메타 데이터에 대한 정보를 각 객체에 포함하지 않습니다. 결과적으로 가장 저렴한 ORM 오버 헤드가 발생합니다.
MySQL , PostgreSQL 및 SQLite 와 함께 작동합니다 .
브라질 ORM : 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 UI 와 통합합니다 . 이것은 JSF 와 비슷 하지만 순수한 PHP로 작성되었습니다.
$this->add('CRUD')->setModel('Employee');
직원 모델과 함께 AJAXified CRUD 가 표시됩니다 .
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";
}
PHP ORM Faces PDO 확장 용. PHP Faces Framework를 참조하십시오 .
$urun = new Product();
$urun->name='CPU'
$urun->prince='124';
$urun->save();
http://code.google.com/p/lworm/을 보십시오 . PHP를위한 정말 간단하지만 강력하고 가벼운 ORM 시스템입니다. 원하는 경우 쉽게 확장 할 수도 있습니다.
우리가 사용하는 또 다른 훌륭한 오픈 소스 PHP ORM은 PHPSmartDb 입니다. 안정적이고 코드를보다 안전하고 깨끗하게 만듭니다. 그 안의 데이터베이스 기능은 PHP 5.3에서 가장 손쉬운 기능입니다.
교리는 아마도 가장 좋은 방법 일 것입니다. Doctrine 이전에는 DB_DataObject 가 기본적으로 오픈 소스 된 유일한 다른 유틸리티였습니다.