Jour 15 : Flux RSS

Bizarre… Obligé de supprimer la première ligne de chaque flux RSS :

<?xml version="1.0" encoding="utf-8"?>

Sinon, il me renvoie une « syntax error »… Bon, du coup, mon flux risque d’être un peu moins valide… mais tant pis ! Je me pencherai plus en détail sur la question quand j’en aurai réellement besoin…

Excepté cela, ce tuto se fait très facilement… pas de difficultés particulières !

Jour 16 : le Web Service

Beaucoup de copier-coller pour moi dans cette partie… qui ne m’intéresse pas outre mesure… Et toujours ce problème de déclaration de version xml…

Sans compter un problème dans la partie du formulaire d’affiliation… Avec les actions du routing… Il s’avère que j’avais oublié de vider le fichier _form.php…

Une petite erreur dans leur code ( lib/model/… au lieu de lib/test/…). Flemme de m’inscrire pour ouvrir un ticket pour le signaler… Tant pis.

Au suivant !

Jour 17 : La recherche

Très impressionnant ! En réutilisant le Zend Framework, on met en place en quelques lignes un très bon formulaire de recherche !

Quelques soucis de droits au début… Heureusement, le très bon site d’Ubuntu était là : http://doc.ubuntu-fr.org/droits#changer_les_permissions

Jour 18 : Ajax

Un formulaire de recherche dynamique… pas transcendant comme Ajax… j’aurai préféré un truc plus impressionnant et plus utile… Heureusement, d’autres tutos Ajax existent pour Symfony !

Jour 19 : Internationalisation

Quelle puissance ça ! Il devient très simple de rendre un site multi-lingue. Cela me servira très certainement dans mes futurs sites !

Petit problème sur mon lien pour lister les jobs d’une catégorie, sur ma page d’accueil… Mais bon, l’essentiel est d’avoir compris le principe :)

Jour 20 : Les plugins

Encore une nouvelle façon d’organiser les fichiers de son projet… J’avoue ne pas être vraiment fan pour le moment… Pour un très gros projet, pourquoi pas… car sur un projet moyen, ça complique plus qu’autre chose…

Plus ça va, plus mon jobeet devient un grand n’importe quoi :) je tetse des choses par ci par là… je fais pas gaffe à les enlever… Du coup, au final, j’ai même pas un tiers des tests qui passent :) ma console devient toute rouge si je tente un test:all :)

Jour 21 : Design

Ca commence à sentir la fin… Je lis en diagonale ce jour… Pas intéressé pas re-designer mon Jobeet… Certes, il y a de jolis thèmes de proposés, mais passons…

Jour 22 : Le cache

Sympa le cache… Mais mon action index ne l’entend pas de cette façon… elle ne veut pas se mettre en cache… la bos en haut à gauche reste désespérement jaune… Pour l’action new, cependant, ça fonctionne ! C’est déjà ça !

Je me rappelle de l’époque où j’avais créé par moi même mon système de cache… Et ba, j’était bien courageux à l’époque… Car malgré les heures passées dessus, ils ne vaut pas un 1/100 de celui ci ! Bref, il faut vraiment arrêter de sans cesse réinventer la roue :)

Jour 23 : Déploiement de Jobeet

Dernier jour décisif, qui, je l’espère, va définitivement me convaincre de passer à ce framework, que j’ai découvert il y a déjà quelques mois, mais que je n’ai jamais vraiment utilisé. Ce maxi tutorial m’a permit de mieux m’en imprégner…

Lors de ma découverte de Ruby On Rails, l’étape de déploiement, justement, m’avait fait hésité à y passer… Voyons pour Symfony !

Après lecture du tuto, il s’avère qu’il ne traite que de la configuration du serveur… Mais une question me tiraille… Comment mettre à jour des changements dans la structure de la base de données ? Jusque là, la commande build détruisait tout les précédents enregistrements… Quand la question se posera (lors du déploiement de mon premier projet sous Symfony), j’explorerai plus en détails la question…

Jour 24 : Conclusion

Un dernier jour pour conclure tout ce que l’on a vu ensemble pendant ces 23 jours. Je me rend compte qu’il me faudra approfondir les notions de slots, partials et components… Pas encore très claires dans mon esprit (cela permet de mieux organiser le code, mais les différences entre ces 3 entitées étant faibles… je ne sais pas vraiment laquelle utiliser pour chaque situation).

A présent, je vais pouvoir me lancer dans mon projet perso ! Déjà, avec toutes les bases apprises par l’intermédiaire de Jobeet, j’y vois plus clair, et je peux m’attaquer à la réflexion sur les différents modules et l’architecture nécessaires à mon site.

A bientot, pour de nouvelles aventures Symfony !

,

Jobeet : jours 7 à 14

Jour 7 : La page des catégories

Un nouveau module… démarche intéressante, relativement différente du premier module « job ». Découverte de la pagination… aucune difficulté particulière…

Jour 8 : les tests unitaires

Quelqu’un a réussi à se motiver à faire des tests pour chaque fonction écrite depuis le début du tuto ? moi, non… Clair que c’est beau dans l’idée, mais il faut avoir une sacrée rigueur pour tout tester ! J’essaierai quand même de m’y mettre lorsque je ferai mon premier site sous Symfony…

Jour 9 : les tests fonctionnels

Vraiment énorme ça… Encore une fois, il faut la motivation pour bien coder ça proprement… mais après, c’est nickel ! Plus de risques de paumer des fonctionnalités après avoir codé de nouveaux trucs…

Et le tuto est bien fait… Apprentissage bien en douceur…

Jour 10 : les formulaires

Un peu brouillon ce tuto… tout arrive en vrac… pas méga clair… mais bon, au final, ça semble fonctionner… juste un problème de droit pour l’upload des logos sur le serveur…

Jour 11 : formulaires et tests

Chose intéressante, on apprend qu’on peut relativement facilement utiliser des bouts de librairie Symfony sur d’autres projets… genre le cache, le formulaire…

Sinon, rien de bien particulier durant cette journée. Les bases sont acquises, les progrès sont moins impressionnant que pendant les premiers jours…

Jour 12 : administration

Sacrément puissant… une interface d’admin parfaitement configurée en quelques lignes… reste que pour l’insant, tout le monde peut y aller… Les droits seront surement au programme des prochains jours…

Jour 13 : sécurisation de l’administration

intéressant de découvrir ce plugin, sfGuard… ou comment réaliser en 3 clics un controle d’accès… bon, piour mon futur projet Symfony, je pense quand même développer par moi même cette partie… je pense qu’il est assez complexe de mettre en place cela dans un site…

Au passage, mes tests fonctionnels ne sont plus passés dans le backend… il faudrait pouvoir simuler un utilisateur connecté… à voir…

Jour 14 : Voler des ses propres ailes…

Bon, encore une fois, je fais mon rebelle… j’en profite pas pour dévelloper un truc par moi même… je passe direct à la semaine 3…

A bientot !

,

Ayé, je viens enfin de finir les 400 et quelques pages de la documentation officielle de Symfony ! Je vais donc vous faire une petite présentation de ce framework PHP…

J’ai découvert par pur hasard ce framework début aout… Et j’ai été directement conquis par le concept. Très proche de la philosophie de Ruby On Rails, que j’avais commencé à regarder, tout en restant du PHP… Et donc, plus simple à déployer. Le tout, sans avoir à réapprendre un nouveau langage de programmation !

Les bases :

Pour commencer, et comme beaucoup d’autres framework à la mode, Symfony est basé sur une architecture MVC (Modèle – Vue – Controlleur). En gros, ça signifie qu’on décompose une page web en 3 parties :

  • Le modèle, qui s’occupe du traitement des données,
  • La vue, qui insère ces données dans un format d’affichage (du xHTML, du XML…),
  • Et enfin, le controlleur, le « chef d’orchestre » de l’ensemble, qui fait communiquer tout le monde.

Les « pages » sont alors décomposées en différents parties :

  • les applications (exemple de 2 applications pour un site : la partie « publique » et l’inteface d’administration),
  • les modules : dans chaque application, ils correspondent aux parties du site (exemple, pour un blog, un module « article »),
  • les actions : pour un même module, il existe souvent plusieurs actions (pour revenir à notre blog, « ajouter un commentaire », « noter un commentaire »). Ces différentes actions peuvent modifier la page actuelle (notamment avec de l’AJAX, pour pas tout recharger).


Des conventions de partout…

Les concepteurs de Symfony s’appuient sur le principe « DRY » : Don’t Repeat Yourself. Inutile de répéter 15 fois à notre application que les fichiers de vue se trouvent dans le dossier untel par exemple.

Pour cela, de nombreuses conventions de nommages sont présentes ainsi que de nombreuses conventions afin de ranger ses fichiers au bon endroit…Appelez un champ d’une table « created_at », et hop, automatiquement, il se remplira avec l’heure de sauvegarde dans la base de chaque enregistrement. Et si, par hasard, on voulait passer outre certaines conventions, cela n’est pas un problème ! Tout se reconfigure très facilement.

Les fichiers de configurations sont « en cascades ». On peut définir un ensembles de configurations pour l’ensemble de l’application, puis, pour certains modules, modifier certaines parties de la configuration…

Ne pas réinventer la roue…

Autre philosophie appréciable dans ce framework : It does not reinvent the wheel:. Ce principe de ne pas réinventer la roue à chaque fois, ils l’appliquent directement à leur framework, en s’inspirant de différentes solutions déjà exisantes pour :

  • la base de données objet : propel
  • pour les tests unitaires : lime

La base de données objets semble un concept assez flou au départ… Mais on s’y fait vite ! Et ça ouvre de nouvelles possibilités !

Grace à ce framework, le dévoleppement se fait en « mode agile », c’est à dire qu’on peut très facilement ajouter ou modifier des parties de l’application (oui, on ne parle plus vraiment de site internet à ce niveau là :) ). La logique du framework oblige à une certaine organisation de ses fichiers, de ses classes… Tout est plus clair, et donc, plus facilement modifiable.

En conclusion…

Et pour finir cette présentation… une objection :

« Whether you are a PHP 5 expert or a newcomer to web application programming, you will be able to use symfony. The main factor in deciding whether or not to do so is the size of your project. »

Faut pas rêver… si tu n’a pas déjà de solides connaissances en PHP, inutile de regarder Symfony… Faut commencer tranquillement… A mettre son petit code PHP au milieu de ses pages HTML… Sinon, jamais tu ne comprendra l’intérêt d’un framework comme Symfony !

Et un point négatif enfin… La documentation en ligne… Plutot mauvaise… Rien à voir avec l’excellente doc PHP, qui mélange à merveille functions et exemples d’utilisation…

Pour conclure, la nouvelle version du PJEA sera probablement basé la dessus ! Mais c’est pas pour demain… J’ai à peine commencé les premiers schémas, les premiers « cahiers des charges »…

Pour approfondir :

Le site officiel : http://www.symfony-project.org/

Et notamment quelques tutorials sympas sur cette page : http://www.symfony-project.org/doc/1_1/

Là, j’ai attaqué un genre de gros tutorial, qui permet de réaliser ce site : askeet.

Bonne découverte :)

, ,