Czy istnieje dobra biblioteka odwzorowań obiektowo-relacyjnych dla PHP?
Znam PDO / ADO, ale wydają się one dostarczać jedynie abstrakcję różnic między dostawcami baz danych, a nie faktyczne mapowanie między modelem domeny a modelem relacyjnym. Szukam biblioteki PHP, która działa podobnie jak Hibernate dla Javy i NHibernate dla .NET.
Są tylko dwa dobre: Doktryna i Propel . Preferujemy Doctrine i działa dobrze z Symfony . Jeśli jednak oprócz głównych potrzebujesz pomocy w zakresie baz danych, musisz napisać własny kod.
źródło
Axon ORM jest częścią Fat-Free Framework - zawiera maper w locie. Brak generatorów kodów. Brak głupich plików konfiguracyjnych XML / YAML . Odczytuje schemat bazy danych bezpośrednio z backendu, więc w większości operacji CRUD nie trzeba nawet rozszerzać modelu podstawowego. Działa ze wszystkimi głównymi silnikami baz danych obsługiwanymi przez PDO : MySQL , SQLite , SQL Server / Sybase, Oracle, PostgreSQL itp.
Przede wszystkim wtyczka i towarzysząca jej warstwa dostępu do danych SQL są tak samo lekkie jak środowisko: 14 KB (Axon) + 6 KB (SQLdb). Beztłuszczowy to tylko 55 KB.
źródło
$product->load('product_id=123')
w przykładzie.$product->load(array('product_id=:id',array(':id'=>123)));
Sam opracowuję Pork.dbObject. (Prosta implementacja ORM PHP i Active Record) Głównym powodem jest to, że większość ORM jest za ciężka.
Główną myślą Pork.dbObejct jest lekkość i łatwość konfiguracji. Brak wiązki plików XML, tylko jedno wywołanie funkcji w konstruktorze, aby go powiązać, oraz addRelation lub addCustomRelation, aby zdefiniować relację z innym obiektem dbObject.
Spójrz: Pork.dbObject
źródło
Wypróbuj Doctrine2 . Jest to prawdopodobnie najpotężniejsze narzędzie ORM dla PHP. Wspominam o tym oddzielnie od Doctrine 1, ponieważ jest to zupełnie inne oprogramowanie. Został przepisany od podstaw, wciąż jest w fazie beta, ale można go teraz wykorzystać i rozwinąć.
To bardzo złożony ORM, ale dobrze zaprojektowany. Wiele magii z oryginalnej Doktryny 1 zniknęło. Zapewnia kompletne rozwiązanie i możesz napisać własną ORM na Doctrine2 lub użyć tylko jednej z jej warstw .
źródło
Właśnie zacząłem od Kohany i wydaje się najbliższa Ruby on Rails bez wywoływania złożoności wielu plików konfiguracyjnych, takich jak Propel .
źródło
Sprawdź Outlet ORM . Jest prostszy niż Propel i Doctrine i działa podobnie do Hibernacji, tyle że z większym wyczuciem PHP.
źródło
Naprawdę podoba mi się Propel , tutaj możesz uzyskać przegląd, dokumentacja jest całkiem dobra i można ją uzyskać za pośrednictwem PEAR lub SVN.
Potrzebujesz tylko działającej instalacji PHP5 i Phing, aby zacząć generować klasy.
źródło
Znalazłem klasy związane z ORM w bibliotece PHP Flourish .
źródło
Powinieneś sprawdzić Idiorm i Paryż .
źródło
Daj szansę na dORM, mapujący obiektowo obiekt dla PHP 5 . Obsługuje wszystkie rodzaje relacji (1 do 1), (1 do wielu), (wiele do wielu) i typy danych. Jest to całkowicie dyskretne: nie wymaga generowania kodu ani rozszerzania klasy. Moim zdaniem jest lepszy od wszelkich dostępnych ORM, w tym Doctrine i Propel. Jednak wciąż jest w fazie beta i może się znacznie zmienić w ciągu najbliższych kilku miesięcy. http://www.getdorm.com
Ma również bardzo małą krzywą uczenia się. Trzy główne metody, których będziesz używać to:
źródło
Obecnie pracuję nad phpDataMapper , który jest ORM zaprojektowanym tak, aby miał prostą składnię, taką jak projekt Ruby's Datamapper. Jest wciąż na wczesnym etapie rozwoju, ale działa świetnie.
źródło
Miałem wspaniałe doświadczenia z Idiorm i Paryżem . Idiorm to mała, prosta biblioteka ORM. Paris jest równie prostą implementacją Active Record opartą na Idiorm. To jest dla PHP 5.2+ z PDO. Jest idealny, jeśli chcesz czegoś prostego, co możesz po prostu wpaść do istniejącej aplikacji.
źródło
Próbowałem biblioteki ORM of Flourish .
źródło
Do czasu wydania PHP 5.3 nie oczekuj dobrej ORM. Jest to ograniczenie OO PHP.
źródło
Mój przyjaciel Kien i ja ulepszyliśmy wcześniejszą wersję ORM, którą napisał przed PHP 5.3. Zasadniczo przenieśliśmy na Active Record Ruby on Rails do PHP. Nadal brakuje niektórych kluczowych funkcji, takich jak transakcje, obsługa złożonego klucza głównego, kilka dodatkowych adapterów (obecnie działają tylko MySQL i SQLite 3). Ale jesteśmy bardzo blisko ukończenia tego. Możesz zajrzeć na PHP ActiveRecord z PHP 5.3 .
źródło
Wypróbuj PHP ADOdb.
Nie mogę powiedzieć, że jest najlepszy, ponieważ nie korzystałem z innych. Ale jest szybki, obsługuje Memcached i buforowanie.
I jest o wiele szybszy niż DB / Select Zend Framework .
źródło
Spójrz na LEAP ORM dla Kohany . Współpracuje z wieloma bazami danych, w tym DB2 , Drizzle , Firebird , MariaDB , SQL Server, MySQL , Oracle, PostgreSQL i SQLite . Dzięki prostej funkcji autoload może współpracować z prawie każdym frameworkiem PHP. Kod źródłowy znajduje się na GitHub pod adresem https://github.com/spadefoot/kohana-orm-leap . Możesz sprawdzić samouczki LEAP online.
Biblioteka ORM działa z kluczami podstawowymi i kluczami złożonymi niecałkowitymi. Połączenia są zarządzane za pośrednictwem puli połączeń z bazą danych i działa z surowymi zapytaniami SQL. ORM ma nawet konstruktor zapytań, który sprawia, że budowanie instrukcji SQL jest bardzo proste.
źródło
Możesz sprawdzić Odpocząć, jeśli masz ochotę na przygodę. Podobnie jak Outlet , jest wzorowany na Hibernacji .
Jest wciąż na bardzo wczesnym etapie rozwoju, ale jak dotąd jedynymi ograniczeniami w modelu domeny są to, że klasy nie są oznaczone jako końcowe, a właściwości nie są oznaczone jako prywatne. Gdy przejdę do krainy PHP> = 5.3, spróbuję również wdrożyć obsługę własności prywatnych.
źródło
Jeśli szukasz ORM, który implementuje paradygmat Data Mappera, a nie Active Record, to zdecydowanie sugeruję przyjrzenie się GacelaPHP .
Funkcje Gacela:
Inne rozwiązania ORM są zbyt rozdęte lub mają uciążliwe ograniczenia przy opracowywaniu czegokolwiek zdalnie skomplikowanego. Gacela rozwiązuje ograniczenia związane z aktywnym podejściem do rekordów, wdrażając wzorzec mapowania danych, przy jednoczesnym utrzymywaniu wzdęcia na minimum, używając PDO do wszystkich interakcji z bazą danych i Memcached.
źródło
MicroMVC ma ORM 13 KB, który opiera się tylko na klasie bazy danych 8 KB . Zwraca również wszystkie wyniki jako same obiekty ORM i używa późnego wiązania statycznego, aby uniknąć osadzania informacji o tabeli bieżącego obiektu i metadanych w każdym obiekcie. Powoduje to najtańszy narzut na ORM.
Działa z MySQL , PostgreSQL i SQLite .
źródło
Brazylijski ORM: http://www.hufersil.com.br/lumine . Działa z PHP 5.2+. Moim zdaniem jest to najlepszy wybór dla Portugalczyków i Brazylijczyków, ponieważ ma łatwą do zrozumienia dokumentację i wiele przykładów do pobrania.
źródło
Agile Toolkit ma własną unikalną implementację ORM / ActiveRecord i dynamicznego SQL .
Wprowadzenie: http://agiletoolkit.org/intro/1
Składnia (aktywny rekord):
Składnia (dynamiczny SQL):
Podczas gdy Dynamic SQL i Active Record / ORM są użyteczne bezpośrednio, Agile Toolkit dodatkowo integruje je z interfejsem użytkownika i interfejsem użytkownika jQuery . Jest to podobne do JSF, ale napisane czystym PHP.
Spowoduje to wyświetlenie CRUD AJAXified dla modelu pracownika.
źródło
NotORM
źródło
PHP ORM Faces Do rozszerzenia PDO. Zobacz PHP Faces Framework .
źródło
Spójrz na http://code.google.com/p/lworm/ . Jest to naprawdę prosty, ale potężny, lekki system ORM dla PHP. Możesz go łatwo przedłużyć, jeśli chcesz.
źródło
Kolejnym świetnym open source PHP ORM, którego używamy, jest PHPSmartDb . Jest stabilny i sprawia, że kod jest bardziej bezpieczny i czysty. Baza danych w nim zawarta jest najłatwiejsza, jaką kiedykolwiek korzystałem z PHP 5.3.
źródło
Doctrine jest prawdopodobnie najlepszym wyborem. Przed Doctrine DB_DataObject było zasadniczo jedynym innym narzędziem, które było dostępne na zasadach open source.
źródło
Jeśli szukasz ORM, takiego jak Hibernacja , powinieneś spojrzeć na PMO .
Można go łatwo zintegrować z architekturą SOA (do opracowania jest tylko klasa usług internetowych).
źródło