Objectif

Notre objectif consiste à promouvoir l'utilisation du framework Symfony et publier les bonnes pratiques de développement auprès des entreprises et des universitaires.

dimanche 15 décembre 2013

Au secours!! J'ai du mal avec les fichiers

Tout le monde en a marre d'explorer un répertoire donné à l'aide du PHP native. C'est pourquoi je vous propose une classe Symfony2 qui pourrait vous être utile dans vos traitements sur les fichiers. La classe en question n'est autre que la classe "Finder" du package "Symfony\Component\Finder".

Comment l'utiliser et c'est quoi sa principale utilité sont les deux questions qui vous alliez surement vous poser. C'est pourquoi, on vous suggère de rester bien calé et de regarder l'exemple qui suit pour avoir votre réponse:

$finder = new \Symfony\Component\Finder\Finder();
$finder->in($path);
$files = $finder->files();
$folders = $finder->directories();

Mais c'est quoi ce charabia que vous mentionniez là? Ne vous paniquez pas car le truc est simple. Pour se faire, il fallait tout simplement instancier la classe "Finder" dans la première ligne de cet exemple et faire appel ensuite à la méthode "in()" avec comme argument le chemin du répertoire qu'on souhaite explorer. Une fois vous avez mis en oeuvre ce traitement, les deux dernières lignes servent tout simplement à explorer tous les fichiers (via la méthode "files()") ou bien tous les dossiers (via la méthode "directories()") du répertoire donné (en allant dans tous les sous répertoires).

Vous la trouvez utile non? Malheureusement, on a mentionné juste un petit aspect de cette classe qu'on a qualifié d'intéressant sans trop entrer dans les détails de son fonctionnement. Toutefois, si par forte soif d'apprendre, vous cherchez à avoir encore plus de détails, n'hésitez pas à jeter un coup d’œil sur la documentation de ce composant Symfony2 qui est accessible ici

PS: Cette classe est une représentation du patron de conception itérateur (iterator).

samedi 14 décembre 2013

"LTS" vous dit quelque chose!

Vous avez peut être entendu parler un jour du terme "LTS"?
"LTS" est une abréviation pour dire "Long Term Support", c'est à dire qu'une version donnée sera maintenue pour un long moment.

Au niveau de Symfony, c'est la version 2.3 qui est une version "LTS" et elle sera maintenue pour 3 ans.

vendredi 13 décembre 2013

"Semantic Versioning"?

Vous entendez peut être bien ce terme pour la première fois? C'est pourquoi une petite définition s'impose:
Le "Semantic versionning" est une convention pour nommer les versions d'une API (bundle Symfony2, plugin...) donnée. 

Le principe est simple: Prenons une version x.y.z (ex: version 1.0.0, version 1.1.0, version 1.1.1)
  • x => pour dire majeur: Ce nombre n'est incrémenté que si les modifications apportées causent l'incompatibilité de l'API.
  • y => pour dire mineur: Ce nombre n'est incrémenté que si on ajoute des fonctionnalités qui sont compatibles avec la version actuelle.
  • => pour dire patch: Ce nombre n'est incrémenté qu'après avoir fixé une anomalie.
Un exemple peut s'avérer plus efficace qu'une définition; Imaginons qu'un développeur décide de créer un bundle  Symfony2 qui permet de gérer les produits dans une boutique:
  1. Il commence par développer une fonctionnalité d'ajout d'un produit. Une fois terminée, la version de son bundle est 0.1.0 (Pour une API en mode développement, le x est toujours à 0)
  2. Une deuxième fonctionnalité terminée qui est l'affichage des produits avec pagination, alors la version du bundle est de 0.2.0
  3. Une troisième fonctionnalité qui est la suppression d'un produit est mise en place, alors la version du bundle devient 0.3.0
  4. Il retrouve une anomalie au niveau de la pagination lors de l'affichage des produits (les même produits sont affichés sur chaque page). Une fois corrigée, la version du bundle passe à 0.3.1.
  5. Une dernière fonctionnalité qui permet de trier les produits lors de l'affichage est ajoutée. Le bundle passe à la version 0.4.0
  6. Après plusieurs itérations de développement, le bundle est enfin stable et prêt à être divulgué au public, à ce moment, la version 1.0.0 entre en jeux
  7. D'autres nouvelles fonctionnalités sont ajoutées ( 1.1.0, 1.2.0, 1.3.0, etc..)
  8. Après quelques mois, le développeur trouve qu'il aurait pu faire mieux s'il a suit les bonnes pratiques de développement Symfony2, alors il est obligé d'introduire des changements radicaux dans son bundle. La version stable qui résultera de cette manœuvre est la version 2.0.0
NB: Il faut bien souligner qu'il n'y a pas de limite particulière pour les nombres utilisés au niveau du xy ou bien du z. La seule restriction c'est qu'ils doivent être supérieurs ou égales à 0.
Ce principe de "versionning" est applicable dans ce qu'on appelle les tags lorsqu'on travaille avec un système de gestion des versions (git, svn).

PS: Le Framework Symfony en lui même repose sur ce principe.