복붙노트

좋은 PHP ORM 라이브러리?

PHP

좋은 PHP ORM 라이브러리?

PHP를위한 훌륭한 객체 - 관계형 매핑 라이브러리가 있습니까?

PDO / ADO에 대해 알고 있지만 도메인 모델과 관계형 모델 간의 실제 매핑이 아니라 데이터베이스 공급 업체 간의 차이점을 추상화하는 것만 같습니다. 나는 Hibernate가 Java를 위해하는 방식과 NHibernate가 .NET을 위해하는 방식과 비슷한 기능을하는 PHP 라이브러리를 찾고있다.

해결법

  1. ==============================

    1.

    교리를 살펴보십시오.

    Doctrine 1.2는 활성 레코드를 구현합니다. Doctrine 2+는 DataMapper ORM입니다.

    또한 Xyster를 확인하십시오. 데이터 매퍼 패턴을 기반으로합니다.

    또한 DataMapper 대 Active Record를 살펴보십시오.

  2. ==============================

    2.

    RedBean을 사용해보십시오.

    심지어 모든 잠금 및 트랜잭션을 수행하고 백그라운드에서 성능을 모니터합니다. (지옥! 가비지 수집도 ....) 베스트 ... 모두 ... 당신은 코드의 단일 줄을 쓸 필요가 없습니다 ... 예수님, ORM 층, 저를 엉덩이로 구 했어요!

  3. ==============================

    3.

    교리와 Propel의 두 가지 좋은 것들만 있습니다. Doctrine을 선호하며 Symfony와 잘 작동합니다. 그러나 주요 지원 외에도 데이터베이스 지원을 원한다면 직접 코드를 작성해야합니다.

  4. ==============================

    4.

    Axon ORM은 Fat-Free Framework의 일부로, On-The-Fly 매퍼가 특징입니다. 코드 생성기가 없습니다. 바보 같은 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 데이터 액세스 계층은 프레임 워크만큼 가벼워 14KB (Axon) + 6KB (SQLdb)입니다. Fat-Free는 단지 55KB입니다.

  5. ==============================

    5.

    나는 Pork.dbObject를 독자적으로 개발 해왔다. (간단한 PHP ORM 및 액티브 레코드 구현) 가장 큰 이유는 대부분의 ORM이 너무 무거웠습니다.

    Pork.dbObejct의 주된 생각은 가볍고 설정하기 쉽다는 것입니다. XML 파일은 많지 않습니다. 생성자에서 바인드 할 함수 호출 하나와 다른 dbObject와의 관계를 정의하는 addRelation 또는 addCustomRelation이 있습니다.

    한번보세요 : Pork.dbObject

  6. ==============================

    6.

    Doctrine2를 시도하십시오. 아마도 PHP를위한 가장 강력한 ORM 도구 일 것입니다. Doctrine 1과는 별도로 언급하고 있습니다. 완전히 다른 소프트웨어이기 때문입니다. 처음부터 다시 작성되었지만 여전히 베타 단계에 있지만 지금은 사용할 수 있고 개발되었습니다.

    매우 복잡한 ORM이지만 잘 설계되었습니다. 원래 교리 1의 많은 마법이 사라졌습니다. 완전한 솔루션을 제공하며 Doctrine2 위에 직접 ORM을 작성하거나 레이어 중 하나만 사용할 수 있습니다.

  7. ==============================

    7.

    Outlet ORM을 확인하십시오. 그것은 Propel과 Doctrine보다 간단하며 Hibernate와 비슷하게 동작합니다.

  8. ==============================

    8.

    필자는 Kohana로 시작했는데, Rubel on Rails에 가장 근접한 것처럼 보입니다. Propel과 같은 여러 구성 파일의 모든 복잡성을 호출하지 않아도됩니다.

  9. ==============================

    9.

    나는 Propel을 정말 좋아한다. 여기서 개요를 얻을 수있다. 문서는 꽤 좋으며 PEAR이나 SVN을 통해 얻을 수있다.

    PHP5를 설치하고 Phing을 사용하여 클래스를 생성하면됩니다.

  10. ==============================

    10.

    필자는 PHP 라이브러리 Flourish에서 ORM 관련 클래스를 발견했습니다.

  11. ==============================

    11.

    PHP 5를위한 객체 관계형 매퍼 인 dORM을 사용하십시오. 모든 종류의 관계 (1 대 1), (1 대 다수), (many-to-many) 및 데이터 유형을 지원합니다. 완전히 코드 생성이나 클래스 확장이 필요하지 않습니다. 내 의견으로는 거기의 모든 ORM보다 우수합니다. 교리와 Propel이 포함되었습니다. 그러나 아직 베타 버전으로 향후 2 개월 내에 크게 바뀔 수 있습니다. http://www.getdorm.com

    또한 학습 곡선도 매우 작습니다. 사용할 세 가지 주요 방법은 다음과 같습니다.

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

    12.

    Idiorm과 Paris를 확인해야합니다.

  13. ==============================

    13.

    나는 현재 phpDataMapper를 연구 중이다. phpDataMapper는 Ruby의 Datamapper 프로젝트와 같은 간단한 구문을 갖도록 설계된 ORM이다. 아직 초기 개발 단계이지만 아직 잘 작동합니다.

  14. ==============================

    14.

    번창 한 도서관의 양식을 시험해 보았습니다.

  15. ==============================

    15.

    PHP 5.3이 출시 될 때까지는 좋은 ORM을 기대하지 않습니다. PHP의 OO 제한 사항입니다.

  16. ==============================

    16.

    Idiorm과 Paris와 함께 좋은 경험을했습니다. Idiorm은 작고 간단한 ORM 라이브러리입니다. Paris는 Idiorm을 기반으로하는 똑같이 단순한 Active Record 구현입니다. PDO가있는 PHP 5.2 이상을위한 것입니다. 기존 응용 프로그램에 그냥 놓을 수있는 간단한 것을 원하면 완벽합니다.

  17. ==============================

    17.

    제 친구 인 Kien과 저는 PHP 5.3 이전에 작성한 ORM의 이전 버전을 개선했습니다. 우리는 근본적으로 Ruby on Rails의 Active Record를 PHP로 이식했습니다. 트랜잭션, 복합 기본 키 지원, 몇 가지 어댑터 (MySQL 및 SQLite 3 만 작동)와 같은 주요 기능이 여전히 부족합니다. 그러나 우리는이 일을 마무리하는 데 아주 가깝습니다. PHP 5.3에서 PHP ActiveRecord를 살펴볼 수 있습니다.

  18. ==============================

    18.

    PHP ADOdb를 사용해보십시오.

    내가 다른 사람들을 사용하지 않았기 때문에 나는 그것이 최고라고 말할 수 없다. 그러나 그것은 빠르며 Memcached와 캐싱을 지원합니다.

    그리고 Zend Framework의 DB / Select보다 빠릅니다.

  19. ==============================

    19.

    Kohana의 LEAP ORM을 살펴보십시오. DB2, Drizzle, Firebird, MariaDB, SQL Server, MySQL, Oracle, PostgreSQL, SQLite 등의 데이터베이스와 함께 작동합니다. 간단한 자동로드 기능을 사용하면 거의 모든 PHP 프레임 워크에서 작동 할 수 있습니다. 소스 코드는 GitHub (https://github.com/spadefoot/kohana-orm-leap)에 있습니다. LEAP의 튜토리얼을 온라인으로 체크 아웃 할 수 있습니다.

    ORM 라이브러리는 정수가 아닌 기본 키와 복합 키와 함께 작동합니다. 연결은 데이터베이스 연결 풀을 통해 관리되며 원시 SQL 쿼리와 함께 작동합니다. ORM에는 SQL 문을 매우 쉽게 작성하는 쿼리 빌더도 있습니다.

  20. ==============================

    20.

    모험을 느끼는 경우 휴식을 확인할 수 있습니다. 아울렛과 마찬가지로 Hibernate를 모델로합니다.

    개발 초기에는 아직 이르지만, 지금까지 도메인 모델에 대한 유일한 제한은 클래스가 최종으로 표시되지 않고 속성이 개인으로 표시되지 않는다는 것입니다. PHP> = 5.3의 영역에 들어가면 개인 속성에 대한 지원도 구현하려고합니다.

  21. ==============================

    21.

    Active Record가 아닌 Data Mapper 패러다임을 구현하는 ORM을 찾고 있다면 GacelaPHP를 살펴 보길 강력히 권합니다.

    Gacela 기능 :

    다른 ORM 솔루션은 너무 복잡해 지거나 원격으로 복잡한 것을 개발할 때 부담스러운 제한이 있습니다. Gacela는 데이터베이스 및 Memcached와의 모든 상호 작용에 대해 PDO를 사용하여 부풀림을 최소화하면서 데이터 매퍼 패턴을 구현함으로써 활성 레코드 접근 방식의 한계를 해결합니다.

  22. ==============================

    22.

    MicroMVC는 8KB 데이터베이스 클래스에만 의존하는 13KB ORM을 가지고 있습니다. 또한 모든 결과를 ORM 객체로 반환하고 늦은 정적 바인딩을 사용하여 현재 객체의 테이블과 메타 데이터에 대한 정보를 각 객체에 포함하지 않도록합니다. ORM 오버 헤드가 가장 낮습니다.

    MySQL, PostgreSQL 및 SQLite와 함께 작동합니다.

  23. ==============================

    23.

    브라질 ORM : http://www.hufersil.com.br/lumine. PHP 5.2 이상에서 작동합니다. 포르투갈어와 브라질 사람들에게 이해하기 쉬운 문서와 다운로드 예제가 있기 때문에 제 생각에는 포르투갈어와 브라질 사람들에게 최고의 선택입니다.

  24. ==============================

    24.

    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();
    

    Dynamic SQL과 Active Record / ORM을 직접 사용할 수있는 반면, Agile Toolkit은 User Interface와 jQuery UI와 통합합니다. 이것은 JSF와 비슷하지만 순수 PHP로 작성되었습니다.

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

    그러면 Employee 모델과 함께 AJAXified CRUD가 표시됩니다.

  25. ==============================

    25.

    알림

    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";
    }
    
  26. ==============================

    26.

    나는 miniOrm에서 일합니다. 가능한 한 간단하게 객체 모델 및 MySQL 추상화 레이어를 사용하기위한 미니 ORM입니다. 희망이 도움이 될 수 있습니다 : http://jelnivo.fr/miniOrm/

  27. ==============================

    27.

    PDO 확장을위한 PHP ORM Faces. PHP Faces Framework를 참조하십시오.

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

    28.

    http://code.google.com/p/lworm/을 참조하십시오. 이것은 PHP를위한 간단하면서도 강력하고 가벼운 ORM 시스템입니다. 원하는 경우 쉽게 확장 할 수도 있습니다.

  29. ==============================

    29.

    우리가 사용하는 다른 훌륭한 오픈 소스 PHP ORM은 PHPSmartDb입니다. 안정적이며 코드를보다 안전하고 깨끗하게 만듭니다. 그 안에있는 데이터베이스 기능은 PHP 5.3에서 사용한 가장 쉬운 방법입니다.

  30. ==============================

    30.

    아마도 교리가 최선의 방법 일 것입니다. Doctrine 이전에는 DB_DataObject가 본질적으로 오픈 소스였던 유일한 유틸리티였습니다.

  31. from https://stackoverflow.com/questions/108699/good-php-orm-library by cc-by-sa and MIT lisence