jQuery mobile, Symfony2, Doctrine 2 et autres tests…

Bonne année!!

Et oui, après de longs mois de silence, les bonnes résolutions de 2011: comme je suis curieux, j’ai voulu faire quelques tests avec Symfony2 et jQuery mobile.

Et comme ma blonde a une « passion » pour les départements français (donner un numéro de département, et deviner le nom du département – difficile à comprendre quand on n’est pas de France j’imagine), j’ai fait un mini-site qui liste les départements français (liste de tous les départements ou par région).

Testez-le ici.

Mise à jour (2011-01-09)

J’ai aussi réaliser quelque chose de similaire pour les capitales des pays. Voir ici. Cela m’a permis de jouer avec les classes php SimpleXMLElement, DOMDocument et la famille PHP DOM, mais aucune ne m’a complètement convaincue. Voir ici pour des commentaires additionnels.

J’ai utilisé…

  • le framework Symfony2 PR4: j’ai utilisé le fichier tarball pour être rapidement « efficace ». Simple à installer, mais je pense qu’il manque quelques commandes Symfony pour générer des Bundles par exemple (j’ai pas trop chercher, peut-être que ça existe)
  • jQuery mobile 1.0 ALPHA 2:
    • les listView: encore quelques améliorations sont nécessaire (notamment pour les count bubbles des nested list), mais ça promet,
    • les liens (remplacés en call ajax) et le back automatique: cool, mais parfois pas très fluide et très lent, et je pense que c’est encore lent si le lien est dans une liste de 100+ items (DOM trop complexe)
    • parfois lorsque la page se loade sur le iphone, le css ne semble pas appliqué. Le problème se résout lorsqu’on raffraichit la page: problème de latence réseau, problème de webKit, problème de DOM trop long, ou de performance iPhone? Je ne sais pas, mais problème il y a… Pour répliquer à tout coup le problème, allez sur votre iphone à http://departements.fruitsoftware.com/index2.html. Dans la dernière version (http://departements.fruitsoftware.com), j’ai séparé les listes imbriquées en 2 pages: chaque nested list est dans une page séparée.
    • d’une manière générale, il reste encore (un peu (?), beaucoup (?)) de travail à faire. Mais très prometteur et utilisable si on accepte les limitations actuels.
  • une base de donnée mySQL et l’ORM Doctrine 2 avec les docBlock annotations (Doctrine 2: excellent!!). Sauf que je n’ai pas trouvé de façon d’initialiser la connexion à UTF8 via la configuration de Symfony2. Pour m’en sortir, j’ai créé une petite méthode dans l’unique controleur de l’application (probablement une meilleure manière de faire, notamment via les postConnect events de la DBAL de Doctine):
        public function fixUtf8() {
            $conn = $this->get('database_connection');
            $statement = $conn->prepare('SET NAMES \'utf8\';');
            $statement->execute();
        }
    
  • Twig pour les views de Symfony2: je n’ai pas trouvé de limitations pour l’instant, il faut s’habituer je pense à la syntaxe (et à l’IDE qui ne « highlight » pas et ne formate pas correctement – tabs…)

Reste à tester…

  • le HTTP cache de Symfony2: je trouve le principe excellent, je me garde juste ça pour plus tard…
  • comment jQuery mobile se comporte avec Google Analytics, notamment avec le remplacement automatique des liens par des calls Ajax [EDIT] J’ai trouvé ce lien qui semble répondre à cette question: http://www.jongales.com/blog/2011/01/10/google-analytics-and-jquery-mobile/
  • les formulaire jQuery mobile et leur intégration avec Symfony2
  • les formulaires Symfony2 en général
  • PhoneGap (lire cet article)

Quelques remarques

  • s’il vous plait, pas de commentaires sur les régions qui ne sont pas des régions, …. J’ai pris mes données de wikipédia, alors, bon, hein…
  • Le framework Symfony2 semble avoir gagner en robustesse par rapport à la version 1, mais aussi plus exigeant: code plus long à taper. Rien de bien grave là, surtout si on gagne en clarté, performance, fonctionalité, beauté (oui oui, Symfony2, c’est beau!!), règles de l’art…
  • Pour tester: Chrome et firefox l’affaire (en redimensionnant la fenêtre), mais j’ai aussi utilisé le iPhone Simulator qui vient avec xcode (sur Mac uniquement)
  • j’ai utilisé Apache et mySQL installé via macPorts: fini pour moi MAMP, j’ai plus de contrôle avec MacPorts, notamment pour installer des extensions php.