Un piccolo problema con Symfony2 e PHPUnit 3.6

Se usate Symfony2 (al momento fino alla versione 2.0.5) e aggiornate PHPUnit alla recente versione 3.6, probabilmente avrete delle eccezioni in test che fino a un attimo prima erano verdi.
Il bug è noto e spiegato in dettaglio sul repo di PHPUnit, in cui si trova anche un semplice, ma efficace, rimedio, in attesa che si mettano d’accordo su chi deve fixare cosa 😉

Rilasciato symfony 1.4.7

Oggi è stato dato l’annuncio del rilascio di una nuova versione di manutenzione dei rami 1.3 e 1.4, rispettivamente 1.3.7 e 1.4.7.
Attenzione: questo rilascio contiene un bug, che impedisce il corretto funzionamento della barra di web debug. Si consiglia quindi di attendere un ulteriore rilascio, che sistemi questo problema.

Aiuta la comunità di Symfony e vinci un premio!

La comunità degli sviluppatori di Symfony ha proposto un nuovo progetto chiamato 1day1ticket. In pratica a partire dal 1° luglio per un numero imprecisato di mesi gli sviluppatori che aiuteranno a chiudere più ticket ed a migliorare quindi il codice del framework riceveranno, da alcuni sponsor, premi in varia natura.

Ma non solo, anche il GrUSP (l’associazione italiana di sviluppatori PHP che ogni anno organizza il phpDay) ha deciso di collaborare offrendo ulteriori premi ai propri iscritti.

Che aspettate? Correte a chiudere dei ticket!

Usando symfony 1.2 e Doctrine 1.0 problemi con le equal nested relation

Non so se vi è mai capitato di avere a che fare con le cosiddette “equal nested relation”. Queste relazioni tra oggetti sono quelle relazioni che possono essere tradotte (per quanto riguarda il database) con un “auto join” su una stessa tabella.

Un esempio pratico lo potete trovare fra gli esempi del sito dell’ORM Doctrine : Equal Nested Relation.

In uno dei miei progetti (Symfony 1.2, Doctrine 1.0) ho dovuto usare un esempio analogo, ma invece che utenti collegati fra loro con una relazione molti a molti, dovevo collegare più ticket. Una volta messo tutto in piedi e creato le classi necessarie ho fatto qualche prova e mi è spuntato questo errore:

500 | Internal Server Error
Doctrine_Connection_Mysql_Exception SQLSTATE23000: Integrity constraint violation: 1062 Duplicate entry 'N-N' for key 1

Inizialmente ho cercato una soluzione che potesse dipendere dalle configurazioni del file schema.yml che usavo e poi soluzioni che potessero riguardare qualsiasi altra cosa. Dopo quasi due giorni a sbattere la testa su questo problema sono andato al PHPDay2009 a cui avrebbe partecipato anche Jonathan Wage, ovviamente ripromettendomi di chiedere direttamente a lui!!

Fortunatamente c’è stata occasione di parlargli e Jonathan è stato più che gentile tanto da aiutarmi e mettersi a provare a trovare una soluzione lì per lì per il mio problema. Dopo circa un’ora siamo arrivati a capire dov’era il problema. Poi a pezzi e bocconi siamo arrivati ad una soluzione nelle successive 24 ore!

La patch da utilizzare è scaricabile da qui. Ricordo che questa NON È UNA SOLUZIONE DEFINITIVA. E’ piuttosto un workaround al problema!! Un ticket relativo a questa soluzione è stato aperto qui.

Sembra che questo problema sia risolto utilizzando symfony 1.3 e doctrine 1.1, quindi aspettiamo con ansia la prossima uscita di symfony che include sfDoctinePlugin con doctrine 1.1!

Symfony 1.1.1 e la nuova directory dei Plugins

E’ stata rilasciata la prima sub-release di Symfony 1.1 che punta a correggere alcuni bachi introdotti nel nuovo branch del framework.

Nello specifico sono stati corretti problemi riguardanti Propel, la gestione del caching dei moduli e l’overriding dei plugin.

E proprio per questi è nata anche la nuova directory dei plugins, dove è possibile filtrare plugin per compatibilità, requisiti e poter collaborare meglio allo sviluppo degli stessi. Più o meno come avviene su Launchpad di Canonical.