Il migliore ORM per PHP: Doctrine o Propel?

Vi dico fin da subito che non avrete la risposta alla domanda in oggetto ma ciò ci darà comunque l’occasione di capire quali sono le maggiori differenze tra i due più famosi ORM per PHP: Doctrine e Propel.
Per chi non sapesse cosa è un ORM, ecco qui la definizione:

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer science is a programming technique for converting data between incompatible type systems in object-oriented programming languages.

Se vogliamo farla semplice (con le dovute semplificazioni) un ORM ci permette di avere una rappresentazione ad oggetti del database facilitando di molto le interrogazioni CRUD ma non solo (possiamo quindi usufruire di metodi getter e setter creati automaticamente, sfruttare al meglio le relazioni tra gli oggetti, ecc…).

La prima release di Doctrine risale al 2008 ed è in continua evoluzione (attualmente è alla versione 2), le sue caratteristiche principali sono:

  • Il pattern utilizzato è Data Mapper e quindi la persistenza degli oggetti è gestita da una classe esterna;
  • Costruito sopra il Database Abstraction Layer (DBAL): un livello posto sopra PDO offrendo un API intuitiva e flessibile per comunicare con il database;
  • Possibilità di utilizzare Doctrine Query Language (DQL) cioè delle query sugli oggetti rappresentanti i modelli (quindi non direttamente sulle tabelle).

Propel è nato nel lontano 2003 ed attualmente è alla versione 2, ciò che lo distingue sostanzialmente da Doctrine è il pattern utilizzato cioè Active Record dove sono gli stessi oggetti a gestire la propria persistenza.

Entrambi gli ORM hanno poi delle funzionalità avanzate tipo la gestione dei behaviors (cioè la possibilità di eseguire delle operazioni automatiche in fase di creazione, modifica ed eliminazione degli oggetti), la validazione dei dati e molto altro ancora.

Se vogliamo andare dritti alla questione, non esiste un ORM perfetto in assoluto ma dipende sempre dal progetto che si ha di fronte; generalizzando ed approssimando il tutto si può affermare che Doctrine risulta più adatto per database più grandi e complessi mentre Propel risulta più fluido per operazioni CRUD (questa scelta è quindi dettata principalmente dal pattern utilizzato: Data Mapper e Active Record).

Melodycode passa a Linode

In questi giorni ho provveduto a spostare il sito da Serverplan (di cui non posso lamentarmi) a Linode (ref link); il piano che ho scelto di utilizzare è il Linode 1GB (10$ al mese) che ospita un Ubuntu Server 14.04 LTS.

Ho colto l’occasione per rendere il tutto più performante installando in primis il plugin “WP Super Cache” per WordPress ed attuando degli aggiustamenti al server.

In questi giorni è in atto il trasferimento del dominio verso Namecheap (ref link); incrociamo le dita!

Cos’è il Web 2.0?

Bene ragazzi, questo è il primo post che va a resuscitare una risorsa proveniente dal vecchio sito: il documento di 60 pagine che spiega cos’è il Web 2.0 (tratto dalla mia tesi e modificata in modo da renderla più web-oriented).

Proprio oggi ho avuto modo di riscontrare il successo di questa “guida al Web 2.0” che è stata utilizzata come riferimento per articoli vari, libri, ecc…quindi non mi resta altro che ringraziarvi!

Polymer

Il Keynote del Google I/O 2014 è stato ricco di novità (per quanto riguarda Android, Chrome ed in generale tutto l’ecosistema Google), una di queste è Polymer.

Cos’è Polymer?

Polymer is a library that uses the latest web technologies to let you create custom HTML elements. Build anything from a button to a complete application as an encapsulated, reusable element that works across desktop and mobile.

Se siete curiosi potete vedere in azione gli elementi base di questa libreria.

Google I/O 2014 Keynote in streaming

Vi ricordo che oggi apre il Google I/O 2014: inizierà alle 18:00 con lo streaming del keynote.