18 septembre 2008

Zend Framework, mon ami

Au niveau programmation, je ne savais trop où me situer.

En effet, si la perspective d’avoir moins à coder en utilisant des frameworks tels Symfony, Copix ou encore Jelix me plaisait, je n’aime pas ne pas avoir le contrôle complet sur le développement d’une application. L’impression que me laissent ce genre de framework est de générer un squelette assez rigide, personnalisable a posteriori. A l’inverse, recoder soi-même tout, à chaque application, c’est exténuant et même si l’on sait exactement comment le tout fonctionne, c’est une grosse perte de temps.

Jusqu’à il y a peu, je me contentais de suivre une approche « plus ou moins » MVC, en séparant bien les choses, et en utilisant des librairies existantes (comme Smarty ou Adodb – Oui, j’utilisais adodb, car PearDB me semblait peu pratique, vraiment pas performant, et accessoirement mal codé). Et puis à force de faire joujou avec une bonne part des frameworks (surtout symfony, copix et le framework Zend), j’ai appris à connaitre ces trois là en particulier, et c’est il y a très peu de temps que j’ai vraiment craqué pour le framework Zend.

Si à première vue ZF fait décousu par rapport aux autres, il est également beaucoup plus souple, on se sent plus libre d’organiser notre application web comme on le souhaite, tout en bénéficiant de nombreuses classes simplifiant beaucoup de choses (la gestion de la BDD, les sessions, les ACL, des locales, de la traduction …). Seul bémol, il faut batailler un peu avec Zend_View_Interface pour pouvoir utiliser Smarty à la place de l’outil de base (qui est bêtement … PHP).

Mais au final c’est peu de choses et même s’il y a autant voir plus de notions à comprendre que dans d’autres frameworks, même si l’on gagne un peu moins de temps lors des premiers développements, les suivants réutilisent la même base, et chacune des classes peut s’utiliser indépendamment, l’architecture MVC étant gérée par la classe Zend_Controller et quelques autres (alors que les petits contrôleurs sont gérés par une instance de classe Zend_Controller), et l’on peut choisir une autre architecture dès le moment où l’on ne charge pas cette classe.

Dans la plupart des cas, on se crée donc un fichier d’initialisation de l’application, où l’on charge les classes du Framework que l’on souhaite utiliser, mais après, c’est complètement libre. Il y a plus de code à faire soi-même, c’est certain, mais on peut vraiment choisir une architecture qui nous est propre.

Petit conseil, installez Xdebug, pour avoir les erreurs présentées de manière chronologique et détaillée.

Important : Ce billet n’est pas sponsorisé ou quoique ce soit ! Ce n’est que mon avis, ce que je pense, et vous êtes libres d’adorer Django, RoR, ou votre framework maison !

IMG_8596

(Ne soyez pas aussi étonné que cet être féérique)

PS : Loin de moi l’idée de dénigrer la qualité de frameworks tels que symfony, copix, jelix, et d’autres, mais ils ne correspondent pas à ma façon de programmer, par le simple fait qu’ils automatisent tout, ajouté à d’autres détails comme la multitude de fichiers de configuration de copix, la pléthore de modules de Copix …

Si vous aimez un de ces frameworks, c’est qu’il répond à votre besoin et donc mes propos ne vous concernent pas.

PS 2 : Une classe Outil pour créer automatiquement de nouveaux projets avec le Zend Framework est apparue il y a peu, le nom du bébé est Zend_Tool (en Anglais). Il permet même d’ailleurs la création de contrôleurs et même d’actions, en créant les vues associées.

11 septembre 2008

Comment répercuter le déplacement d’un serveur svn sur une copie de travail

C’est simple, il suffit une fois dans le répertoire de votre copie de travail de taper :

svn switch –relocate svn://levielemplacement.org/appli/ svn://lenouvelemplacement.org/appli/

C’est plus un mémo qu’autre chose, mais ça évite de chercher 20 minutes la commande comme je l’ai fait ce matin.

10 septembre 2008

Architecture modulaire avec le Zend Framework

J’ai mis quelque temps à avoir une structure en modules avec modèles à part sur le framework Zend.

En effet je voulais quelque chose de propre, utilisant uniquement les API du ZF, et j’ai longtemps hésité à garder Smarty comme moteur de template, avec le soucis qu’il n’est pas forcément bien intégré au framework et qu’on perd les outils du framework sur les templates.

Finalement j’ai trouvé sur le blog d’Andries Seutens un billet où il fournit son squelette de travail avec le ZF en une version structurée de manière conventionnelle (mais avec un joli bootstrap et une organisation qui me plait) et une version structurée en modules, avec un dossier models séparé.

C’est peu de choses mais je n’avais pas idée de comment séparer le dossier de modèles pour éviter d’avoir X copies des classes de modèles.

Dans son architecture, il met un dossier etc dans le dossier de l’application pour la configuration, un dossier jobs pour les scripts à exécuter en crontab, etc …

Il suffit, dans les deux cas, de télécharger le framework Zend, et de décompresser le dossier Zend dans l’archive pour le mettre dans le dossier library.

N’hésitez pas à le remercier :)

IMG_8299_01nb

19 mai 2008

Je laggue, mais voyages-sncf.com a fait peau neuve !

Et il était temps !

C’est pas encore super propre au niveau du code, il se vante d’être accessible et ça a l’air d’être le cas, même si c’est, je pense, encore améliorable.

Manquerait plus que ça respecte les recommandations autres (genre XHTML, tout ça) sans balises superflues pour être au top.

19 mai 2008

Problèmes d’accents en AJAX ?

Oubliez pas de vérifier que dans le script avec lequel javascript va traiter, vous êtes bien dans le même charset que partout ailleurs …

Ca vous épargnera des cheveux …

2 avril 2008

Petite astuce …

Rechercher et remplacer un caractère ou un mot dans un champ d’une table donnée, ça peut paraître compliqué…

En fait ça ne l’est pas :

update

set = replace(,'','');

Facile non ? Ça m’a permis par exemple de corriger un souci dans l’import des liens des commentateurs (qui commençaient parfois par http://http:// et donc ne fonctionnaient pas).

Mysql c’est de la balle, les gens.

29 mars 2008

Zend 1.5.1

Oula le vieux lag !

Alors que j’attendais la version finale et après deux semaines de boulot assez remplies, sans beaucoup de temps pour faire de la veille, je me rends compte avec un peu de retard de la sortie de cette version 1.5 du Frameword Zend, et même d’une version 1.5.1 corrigeant quelques bugs.

Imaginez les nouveautés :

  • Une API pour supporter Youtube
  • Une autre pour Open ID
  • Zend_Form. Enfin une classe à part et très pratique pour les formulaires (de quoi abandonner QuickForm)
  • Zend_Layout, ou comment gérer les pages en y affichant des composants
  • Support de l’utf8 dans Zend_PDF
  • Moteur de recherche Lucene
  • Support de l’authentification LDAP
  • Une API pour accéder aux webservices Google

Il y a eu aussi des tas d’optimisations, de corrections de bugs (35 bugs corrigés entre la 1.5 et la 1.5.1) …

La communauté française est assez active, et il y a pas mal de projets francophones basés sur Zend.

Glooze, qui ne démordra pas que Zend Framework caibien.

27 mars 2008

Aptana

Après avoir utilisé phpeclipse, puis pdt, puis le pdt en version finale, avoir testé le Zend Studio pour Eclipse, j’ai testé il y a peu Aptana.

Enième IDE basé sur la plateforme Eclipse, Aptana m’a surpris sur deux points :

  • Il est léger, démarre vite, si on le compare au Zend IDE basé sur Eclipse.
  • Installer des plugins ? Genre PHP ou Subclipse ? C’est super simple les sites sont déjà enregistrés, il suffit d’aller au même endroit que d’habitude pour installer le support php et subclipse (Help > Software Updates > Find and Install).

En plus de ça, j’aime les petits snippets disponibles pour html/js/css. J’ai dans l’idée qu’on peut aussi en faire pour php ou sql. Ca a l’air sympa, quoi.

PS : Oui y a des tas de trucs pour faire de l’ajax. Mais moi je m’en tape de l’ajax, donc j’utilise pas. Mais Aptana le fait, donc je vous le dis, y a des tas d’outils pour aider à coder/débugguer facilement le javascript utilisé dans un contexte « ajax ».

28 janvier 2008

Zend Framework

Disponible actuellement en version 1.0.3, le framework Zend n’est pas comme les autres frameworks.

Là où la plupart imposent un squelette de base, chargent des tas de classes internes, qu’on en ait besoin ou pas. D’autres encore imposent des conventions de noms, des conventions de placements des fichiers. Tout cela n’est pas forcément une bêtise. Avoir des conventions de nommage, ne pas placer les fichiers n’importe où, cela est utile.

Par contre, ne pas avoir le choix des classes chargées, ne pas pouvoir décider de l’endroit où seront mis les vues, les contrôleurs, les modèles, les helpers, les scripts, les classes externes … tout cela peut être rageant lorsqu’on a uniquement un petit projet et que l’on ne veut pas forcément tout ce que le framework peut nous proposer mais seulement certaines parties (par exemple, imaginez faire du web avec ruby, mais sans rails, uniquement avec ActiveRecord !). Cela suit aussi la vision de Rasmus Lerdorf, le papa de php, qui avait écrit récemment un article expliquant pourquoi il n’aimait pas les frameworks classiques.

Zend Framework (ZF de son petit nom) est prévu comme cela. Vous créez votre fichier de chargement des classes Zend. Si vous ne chargez pas la classe Zend_MVC, votre application ne sera pas structurée forcément selon cette méthode d’organisation (autrement appelé design pattern). De même il n’y a pas de classes chargées automatiquement, c’est vous qui choisissez quelles classes vous utilisez, et comment. Une sorte de grosse librairies PEAR, mais dont la qualité de codage est largement meilleure comparée à la plupart des classes PEAR, encore en PHP4.

Bref, ZF est une bonne alternative dans la plupart des cas, car avec des classes pour gérer une organisation de l’application web en MVC, une classe implémentant PDO et vous permettant d’oublier que est le serveur de base de données, des classes pour gérer les mails, les sessions, le cache, la création de PDF, l’AJAX, les services WEB, et des moteurs de template, … Vous aurez de quoi bâtir de solides applications.

Pour plus d’informations, ou pour télécharger le framework, c’est par là. Une communauté francophone d’utilisateurs du framework zend existe, assez active, n’hésitez pas à aller y faire un tour !

9 janvier 2008

PHP 4 c’est fini !

Juste un petit billet pour vous informer d’une démarche importante !

Si vous aussi votre hébergeur n’offre pas PHP5, si vous aussi il vous dit que ce n’est pas possible, boycottez ! Allez voir ailleurs !

PHP 4.4.8 est sorti il y a quelques temps, et indique la dernière version de PHP4, il n’y en aura plus d’autres, fini ! Viva PHP5 o/

PS : Billet d’humeur réalisé après avoir discuté avec un ami qui m’a dit « PHP5 c’est pas disponible partout parce que c’est pas encore assez stable donc les hébergeurs le mettent qu’en option. »

Bien à vous.