
Il s’agit de la deuxième partie d’un tutoriel, je vous conseille de commencer par la première partie.
Il s’agit de la deuxième partie d’un tutoriel, je vous conseille de commencer par la première partie.
De nos jours, les développements que nous faisons sont de plus en plus réfléchis pour pouvoir être « réutilisables »
Grâce au model objet mis en place avec PHP5 et la mise en place d’un système d’autoload basé sur le nom des classes, les anciens systèmes comme l’utilisation d’un immense fichier d’inclusion pour tous les fichiers ou alors des « require » en entête de chaque fichiers ayant une dépendance avec un autre fichier, sont désormais finis.
Avec les namespaces, les normes PSR, plus particulièrement PSR-0, permet de définir un pattern pour permettre le chargement automatique de toutes les librairies respectant cette norme. Cette norme se résume comme tel : Chaque classe possède son arborescence fichier en tant que namespace. Par exemple, la classe MonModule\Query\State\Builder se trouvera dans le fichier MonModule/Query/State/Builder.php à partir du dossier ou se trouve vos modules, tout simplement.
De plus :
La norme PSR ajoute d’autres conventions d’écriture que vous devez connaitre pour réaliser vos classes proprement, en voici une liste non exhaustive :
Les classes normées de cette manière peuvent être auto-loadée grâce a cette fonction émise par leurs documents :
<?php function autoload($className) { $className = ltrim($className, '\\'); $fileName = ''; $namespace = ''; if ($lastNsPos = strripos($className, '\\')) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; require $fileName; }
N’hésitez pas à aller lire les différentes feuilles de la norme PSR ici : https://github.com/php-fig/fig-standards/tree/master/accepted/fr
Aujourd’hui beaucoup de sites utilisent un Système de Gestion de Contenu (SGC, ou CMS en anglais). Il s’agit d’un site déjà construit, qui permet de façon simple de gérer son contenu, comme les articles, pages ou encore les commentaires. Ce système s’installe rapidement sans connaissance particulière dans le domaine informatique. En voici une liste des plus populaires :
*source technotop
Avec la plateforme Playground mise à votre disposition en OpenSource, imaginer, créer et partager votre jeu se fait facilement, en quelques clics.
Ce tutoriel vous expliquera comment diffuser un jeu Playground sur Facebook, de façon simple et rapide.
Avec l’arrivé de PHP5, les notions de bibliothèques, composants, package, n’ont jamais été si présent dans le développement web. En effet, grâce à l’ajout des objets et des namespaces, le langage PHP est devenu comme tous les autres langages de programmation, un langage souple, modulable et réutilisable. La très forte communauté a donc créé des milliers de composants, bibliothèques, mais très vite, le surplus est devenu fouillis et il fallait mettre de l’ordre dans tout ça.
Composer est un outil mis en place pour la communauté des développeurs de PHP. A l’image de « npm » pour nodejs ou « bundler » pour ruby, il sert de gestionnaire de dépendance entre applications et librairies.
De façon plus précise, Composer permet de gérer pour chaque projet, la liste des modules et bibliothèques nécessaires à son fonctionnement ainsi que leurs versions. Il est utilisable via la console en ligne de commande. De plus, il permet de mettre en place un système d’autoload pour les bibliothèques compatibles.
Pour utiliser Composer, tout se passe dans le fichier composer.json à la racine de votre projet. Ce fichier va définir toutes les informations concernant votre projet ainsi que toutes ses dépendances.
Nous allons prendre comme exemple le fichier composer.json du module zendsqueleton (disponible ici) qui est un cas simple pour comprendre :
{ "name": "zendframework/skeleton-application", "description": "Skeleton Application for ZF2", "license": "BSD-3-Clause", "keywords": [ "framework", "zf2" ], "homepage": "http://framework.zend.com/", "require": { "php": ">=5.3.3", "zendframework/zendframework": "2.2.*" } }
Premièrement, nous voyons que le fichier est un simple tableau au format json. Les premiers éléments sont un ensemble d’attributs définissant le projet. Ce qui nous interesse est la clé « require », c’est ici que sont définit les dépendances. Il y en a deux, chacun avec un nom et une version. Il vous faudra donc PHP 5.3.3 minimum et zendframework dans sa version 2.2 la plus récente.
Le site : https://packagist.org/
Ce site permet d’enregistrer vos propres packages mais aussi de chercher tous les packages disponible, avec une page complète qui liste les différentes versions du package, et une description.
Lors de nos tests unitaires, nous voulons tester une classe de notre projet, mais on aimerait tester seulement notre classe sans dépendre des autres utilisées au sein de celle-ci. Car elles auront leurs propres tests.