Sympal a Symfony CMF

Jonathan Wage, il creatore dell’ORM Doctrine, ha rilasciato pochi giorni fa la prima versione di Sympal, un CMF scritto su symfony e sviluppato da Sensio Labs e Centre{Source}. Il CMF è molto interessante poichè, sfruttando tutta la potenzialità del framework, è facilmente estendibile attraverso un sistema di plugin nativo, è già stato sviluppato un plugin per creare un blog. Il sistema è molto giovane, ma promette bene, consiglio tutti di stare attenti alla sua evoluzione.

Problemi di charset tra Propel ed un database utf8

Se come me avete avuto dei problemi con il giusto charset-encoding tra Propel e un database utf8, per sistemare le cose è sufficente aggiungere il parametro encoding nel file database.yml. Sembra che il client Propel si connetta di default con un charset non utf8, molto probabilmente usa di default il wester (ISO-8859-1).

1
2
3
4
5
6
all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://username:password@localhost/database
      encoding:     utf8

Come trovare l’ultima query eseguita da propel

A volte è molto comodo sapere qual è l’ultima query che Propel ha eseguito. Beh per farlo è molto semplice:

1
2
$connection = Propel::getConnection();
echo $connection->lastQuery;

Facile no… 😉 !!!

Symfony 2.0 – Dependency injection e nuove funzionalità

La “Dependency Injection” si ha quando i componenti ricevono le proprie dipendenze dai loro costruttori, metodi o direttamente dai loro attributi.

Al symfony camp, ho assistito alla presentazione della versione 2.0 di symfony, fatta da Fabien, e sono rimasto veramente impressionato.

  • Symfony 2.0 sarà un evoluzione di symfony 1.0 non una rivoluzione;
  • Molte modifiche fatte nella release 1.1 e 1.2 sono state fatte per supportare la release 2.0;
  • Il disaccoppiamento delle classi fatto nella 1.1 è stato fatto per supportare symfony 2.0;
  • Ci sarà sicuramente un symfony 1.3;
  • La maggior parte dei componenti già scritti resteranno tali;

Ma le vere novità saranno:

  • Un “Dependency injection container” che implementa il patter della “Dependecy Injection” per risolvere la dipendenza tra le classi, poter caricare solo i componenti che si vogliono usare, descrivere la relazione tra i componenti, testarli in maniera più semplice ed efficente e riusarli con molta più semplicità.
  • La creazione di un template layer, per separare veramente la parte di presentazione e poter utilizzare il template engine più consono alle singole esigenze.
  • La creazione di un controller layer sotto forma di servizio.