Doctrine (PHP): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m fix link
m Eliminato i parametri "Licenza del programma" ed "È software libero?" nel template "Software"
 
(4 versioni intermedie di 4 utenti non mostrate)
Riga 1:
{{Software
|Nome = Doctrine
|Sviluppatore =
|UltimaVersione =
|DataUltimaVersione =
Line 7 ⟶ 8:
|SistemaOperativo = multipiattaforma
|Genere = Basi di dati
|Licenza = [[Licenza MIT]]
|Lingua =
|SoftwareLibero = sì
}}
 
Line 17 ⟶ 16:
 
== Storia ==
Doctrine è stato avviato da Konsta Vesterinen, noto anche come zYne-. Il primo [[Controllo versione|commit]] del progetto è stato fatto il 13 aprile 2006 e quando il progetto è diventato più maturo, è stato adottato via via da altri progetti. In poco tempo, la comunità era attiva e lo sviluppo riceveva contributi regolari, tra gli altri, dal progetto [[Google Summer of Code]].
 
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>
Line 24 ⟶ 23:
 
== 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.
Line 31 ⟶ 30:
 
Altre caratteristiche:
* 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;
Line 41 ⟶ 40:
Le entità in Doctrine sono semplici oggetti PHP che contengono proprietà da persistere. Una proprietà è una variabile dell'entità, che viene salvata in e recuperata da un database, tramite le funzionalità di mappatura dei dati di Doctrine, usando un Entity Manager (un'implementazione del [[Design pattern|pattern]] "data mapper"):
 
<sourcesyntaxhighlight lang="php">
$utente = new Utente();
$utente->nome = "Mario";
Line 48 ⟶ 47:
$entityManager->flush();
echo "L'utente con id $utente->id è stato salvato.";
</syntaxhighlight>
</source>
 
La vecchia versione di Doctrine (la 1.x) seguiva il pattern "active record" per lavorare con i dati, per cui una classe corrisponde a una tabella di database. Per esempio, per creare un nuovo oggetto "Utente" in un database, si potrebbe utilizzare il seguente codice PHP:
 
<sourcesyntaxhighlight lang="php">
$utente = new Utente();
$utente->nome = "Mario";
Line 58 ⟶ 57:
$utente->save();
echo "L'utente con id $utente->id è stato salvato.";
</syntaxhighlight>
</source>
 
== Influenze ==
Line 73 ⟶ 72:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
 
* {{Collegamento interrotto|1=[http://docs.doctrine-project.org/ Documentazione] |date=luglio 2018 |bot=InternetArchiveBot }}
{{PHP}}
 
[[Categoria:Framework in PHP]]