Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
teknopedia

teknopedia

teknopedia

teknopedia

teknopedia

teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
teknopedia
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. Weltenzyklopädie
  2. Doctrine (PHP) - Teknopedia
Doctrine (PHP) - Teknopedia
Doctrine
software
GenereSoftware per basi di dati
Data prima versione13 aprile 2006
Ultima versione3.5.8 (29 novembre 2025)
Sistema operativoMultipiattaforma
LinguaggioPHP
Licenzalicenza MIT
(licenza libera)
Sito webwww.doctrine-project.org/
Modifica dati su Wikidata · Manuale

Il progetto Doctrine (o semplicemente Doctrine) è un insieme di librerie PHP principalmente focalizzata sul fornire servizi di persistenza e funzionalità correlate. Il suo progetto principale è un 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 SQL.

Storia

[modifica | modifica wikitesto]

Doctrine è stato avviato da Konsta Vesterinen, noto anche come zYne-. Il primo 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.[1]

La prima versione stabile di Doctrine 2.0 è stata pubblicata il 22 dicembre 2010, dopo 2,5 anni di sviluppo dedicato, partito all'inizio del 2008.[2]

Caratteristiche

[modifica | modifica wikitesto]

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.

Tuttavia non è sempre necessario scrivere esplicitamente le query, poiché Doctrine esegue join e fetch di oggetti correlati in modo automatico. Si possono facilmente scrivere piccoli progetti senza scrivere alcuna query.

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 caching, che usa diversi backend, come memcached, SQLite o APC;
  • transazioni ACID;
  • migrazioni;
  • una funzione di "compilazione" per combinare più file PHP in uno solo, per evitare cali di prestazioni solitamente riscontrati quando si includono molti file PHP.

Esempi

[modifica | modifica wikitesto]

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 pattern "data mapper"):

 $utente = new Utente();
 $utente->nome = "Mario";
 $utente->password = "rossi";
 $entityManager->persist($utente);
 $entityManager->flush();
 echo "L'utente con id $utente->id è stato salvato.";

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:

 $utente = new Utente();
 $utente->nome = "Mario";
 $utente->password = "rossi";
 $utente->save();
 echo "L'utente con id $utente->id è stato salvato.";

Influenze

[modifica | modifica wikitesto]

Doctrine è stato influenzato da decine di progetti e molte persone diverse. Le maggiori influenze sono stati l'ORM Hibernate di Java e ActiveRecord di Ruby on Rails. Entrambe queste soluzioni ORM hanno implementato una soluzione completa in 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

[modifica | modifica wikitesto]
  1. ^ Doctrine 1.0.0 released, su doctrine-project.org.
  2. ^ Doctrine 2 First Stable Release, su doctrine-project.org.

Voci correlate

[modifica | modifica wikitesto]
  • Propel
  • Object-relational mapping
  • Symfony

Collegamenti esterni

[modifica | modifica wikitesto]
  • (EN) Sito ufficiale, su doctrine-project.org. Modifica su Wikidata
  • (EN) Doctrine, su GitHub. Modifica su Wikidata
  • Repository sorgenti di Doctrine, su github.com. Modifica su Wikidata
V · D · M
PHP
Persone
  • Andi Gutmans
  • Rasmus Lerdorf
  • Zeev Suraski
Risorse
  • Composer
  • PEAR
Implementazioni
  • HHVM
  • HPHPc
  • Parrot
  • PeachPie
  • Phalanger
  • Quercus
  • Zend Engine
Web framework
  • CakePHP
  • CodeIgniter
  • Drupal
  • eZ Publish
  • Fat-Free
  • FuelPHP
  • Horde
  • Joomla!
  • Laminas/Zend Framework
  • Laravel
  • Li3
  • Lumen
  • Midgard
  • MODx
  • Nette Framework
  • Phalcon
  • Pop PHP
  • PHP-Fusion
  • PRADO
  • Qcodo
  • Silex
  • SilverStripe
  • Symfony
  • TYPO3
  • WordPress
  • XOOPS
  • Yii
  • Zeta Components
Testing
  • Behat
  • PHPUnit
  • Lime (Symfony)
ORM
  • Doctrine
  • Propel
IDE
  • Aptana
  • Codelobster
  • Eclipse PDT
  • NetBeans
  • PHPEdit
  • PhpStorm
  • RadPHP
  • Zend Studio
Widget toolkit
  • PHP-GTK
  • wxPHP
  • Categoria Categoria
  • Pagina Commons Commons
  Portale Informatica: accedi alle voci di Teknopedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=Doctrine_(PHP)&oldid=148397438"

  • Indonesia
  • English
  • Français
  • 日本語
  • Deutsch
  • Italiano
  • Español
  • Русский
  • فارسی
  • Polski
  • 中文
  • Nederlands
  • Português
  • العربية
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022