Doctrine (PHP): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
wikilink |
|||
Riga 12:
}}
Il '''progetto Doctrine''' (o semplicemente '''Doctrine''') è un insieme di [[Libreria (software)|librerie]] [[PHP]] principalmente focalizzata sul fornire servizi di persistenza e funzionalità correlate. Il suo progetto principale è un [[object-relational mapping|ORM]] e un livello di astrazione del database su cui è costruito.
Una delle caratteristiche fondamentali di Doctrine è la possibilità di scrivere query al database in Doctrine Query Language (DQL), un dialetto orientato agli oggetti di [[Structured Query Language|SQL]].
== Storia ==
Doctrine è stato avviato da Konsta Vesterinen, noto anche come zYne-. Il primo [[commit]] del progetto è stato fatto il 13 aprile 2006
Doctrine 1.0.0 è stato rilasciato il 1º settembre 2008.<ref>[http://www.doctrine-project.org/2008/09/01/doctrine-1-0-released.html Doctrine 1.0.0 released]</ref>
Riga 24:
== Caratteristiche ==
Una caratteristica di Doctrine è il basso livello di configurazione necessario per avviare un progetto. Doctrine può generare classi di oggetti da un database esistente e il programmatore può quindi specificare le relazioni e aggiungere funzionalità personalizzate alle classi generate. Non vi è alcuna necessità di generare o mantenere complessi schemi [[XML]] di database, come visto in molti altri framework.
Un'altra caratteristica fondamentale di Doctrine è la capacità di scrivere, in modo facoltativo, query di database in un SQL dialetto, orientato agli oggetti, chiamato '''DQL''' (Doctrine Query Language), ispirato al linguaggi HQL di [[Hibernate]]. In alternativa, la classe QueryBuilder (corrispondente a Doctrine_Query in Doctrine 1.x) permette di creare query attraverso un'interfaccia fluida. Queste interfacce forniscono agli sviluppatori potenti alternative a SQL, mantengono flessibilità e permettono di cambiare facilmente il database usato, senza richiedere alcuna duplicazione del codice.
Riga 33:
* supporto per hook (metodi che possono convalidare o modificare input e output del database) e ascoltatori di eventi, per strutturare la logica di business;
* aggregazione delle colonne per ereditarietà (oggetti simili possono essere memorizzati in una tabella del database, con un tipo di colonna che specifica il sottotipo di particolare oggetto, la sottoclasse corretta viene sempre restituita quando si esegue una query);
* un framework di [[Cache|caching]], che usa diversi backend, come [[memcached]], [[SQLite]] o APC;
* transazioni ACIDe;
* migrazioni;
Riga 61:
== Influenze ==
Doctrine è stato influenzato da decine di progetti e molte persone diverse. Le maggiori influenze sono stati l'ORM Hibernate di [[Java (linguaggio di programmazione)|Java]] e ActiveRecord di [[Ruby on Rails]]. Entrambe queste soluzioni ORM hanno implementato una soluzione completa in [[Java (linguaggio di programmazione)|Java]] e [[Ruby]] rispettivamente. Lo scopo del progetto Doctrine è quello di costruire una soluzione altrettanto potente per PHP per i siti web ad alto carico, che devono sopportare un flusso costante di visitatori. Doctrine può essere utilizzato per migliorare le prestazioni di tali siti web.
== Note ==
|