up
tel.: +48 720 834 416

ques_markOur Technologies

Best technologies. Effective development

Doctrine

 

Doctrine – nazwa rodziny bibliotek dla PHP 5.3 do kompleksowej obsługi komunikacji z bazami danych.

 

Doctrine 1.x reprezentuje tabele relacyjnych baz danych w postaci klas modeli oraz udostępnia interfejs do zarządzania danymi za ich pomocą. W przeciwieństwie do innych rozwiązań tego typu, biblioteka potrafi wygenerować modele na podstawie już istniejącej struktury bazy danych, dzięki czemu nie jest konieczne zarządzanie rozbudowanymi schematami w formacie XML. Wygenerowane modele można rozbudowywać o dodatkową funkcjonalność, jakiej potrzebuje programista. Możliwa jest także praca ze schematem w formacie YAML, który służy do generowania zarówno modeli, jak i struktury bazy danych.

 

Wśród innych możliwości biblioteki znajdują się:

  • Wsparcie dla przechowywania struktur drzewiastych w bazie danych.
  • Obsługa hooks (metod sprawdzających poprawność oraz filtrujących dane) i zdarzeń ułatwiająca wyrażenie dodatkowej logiki biznesowej.
  • Wsparcie dla transakcji
  • Mechanizm Cache
  • Współdzielone zachowania (ang. behaviors), które mogą być wykorzystywane przez modele.
  • Wsparcie dla migracji baz danych (aktualizacji struktury).

 

Doctrine 2.0 składa się z szeregu mniejszych bibliotek odpowiedzialnych za różne aspekty pracy z bazami danych. Podstawową biblioteką jest Doctrine DBAL stanowiąca warstwę abstrakcji bazy danych. Rozszerza ona PHP Data Objects o dodatkowe funkcjonalności oraz wprowadza tzw. mechanizm platform, które opisują możliwości i różnice między dialektami języka SQL używanymi przez różne systemy zarządzania bazą danych. Na bazie DBAL zbudowana jest biblioteka ORM. W stosunku do poprzednich wydań, jej architektura oraz używana terminologia uległa całkowitej przebudowie.

 

Możliwości:

  • język Doctrine Query Language do formułowania zapytań z jasną, jednoznaczną gramatyką i możliwością rozbudowy o nowe elementy,
  • lekkie obiekty encji – Doctrine nie narzuca żadnych interfejsów, ani klas do rozszerzenia,
  • wsparcie dla transakcji oraz inteligentne kolejkowanie zapytań do wykonania w celu uzyskania jak największej wydajności,
  • opis struktury bazy danych poprzez mechanizm adnotacji, lub w formatach XML/YAML,
  • wsparcie dla dziedziczenia tabel na poziomie biblioteki,
  • duże możliwości rozszerzania,
  • mechanizm buforowania.