Pour le compte de Webmasters Europe e.V., Marco et moi avons développé le concept détaillé du curriculum du module de développement Web de niveau 2, qui couvre des sujets avancés comme la programmation orientée objet, AJAX et aussi les frameworks.
Dans ce billet de blog, je fais le point sur ce travail de développement et j'explique nos choix.
Qu'est-ce qu'un framework PHP ? Au moins certains d'entre vous n'auront probablement jamais entendu ce terme auparavant. Un framework est une sorte de complément au langage de programmation sous-jacent et fournit de nombreuses fonctionnalités supplémentaires que nous devrions autrement écrire à la main dans chaque projet.
Toute personne qui a déjà copié des fonctions d'un ancien projet afin de les rendre disponibles dans un nouveau projet a déjà créé son propre petit framework. En langage courant, on pourrait donc décrire un cadre de travail comme "les choses dont vous avez besoin à chaque fois".
Dans Codeyourweb, nous utiliserons un framework à la fois pour PHP et JavaScript pour vous aider dans votre programmation. En ce qui concerne le JavaScript, le choix du framework à utiliser a été très facile. jQuery a largement dépassé tous ses concurrents et est désormais pratiquement sans concurrence dans son domaine d'application. Pour les domaines d'application spéciaux, il existe d'autres frameworks, par exemple ExtJS pour le développement d'interfaces complexes, mais dans le domaine des frameworks à usage général, jQuery est actuellement inattaquable au sommet.
Avec PHP, les choses sont un peu différentes. Il existe à peu près autant de frameworks que de développeurs. D'accord, la comparaison est un peu exagérée, mais il y a vraiment beaucoup de frameworks pour PHP. Vous trouverez un aperçu approximatif sur le site http://www.phpframeworks.com/, mais même de mémoire, je pense à plusieurs produits (Alloy, Qcodo, Kohana, Silex, Limonade ...) qui ne figurent pas sur cette liste. Il n'a donc pas été facile de choisir un candidat approprié pour notre cours.
Après quelques recherches et de nombreuses (nombreuses) discussions, nous avons décidé d'opter pour Symfony 2. Dans la suite du billet, je vais expliquer les raisons de notre décision.
Distribution
Il doit s'agir d'un framework dont la part de marché est élevée. Il existe un grand nombre de frameworks très innovants et très intéressants dans l'espace PHP - utilisés par une douzaine de programmeurs. Par exemple, nous avons regardé à quelle fréquence (ou s'il y en avait une) les noms des frameworks apparaissaient dans les offres d'emploi (Webmasters Europe avait fait une analyse du marché du travail pour cela), s'il y avait des livres imprimés ou quelle était l'étendue de la communauté.
Selon ce critère, nous avions réduit la liste des candidats à
- Zend Framework
- Symfony
- CakePHP
- CodeIgniter
- Yii
Modernité
PHP 5 est sorti en 2004, la poursuite du développement de PHP 4, y compris la correction des failles de sécurité, a été interrompue en 2008. Utiliser PHP 4 aujourd'hui n'est pas une bonne idée - c'est un euphémisme :
Vous passez à côté des avancées et des nouvelles fonctionnalités qui ont fait leur chemin dans le langage depuis PHP 5. En gros, vous programmez comme vous le faisiez il y a 7 ans, ce qui est long dans le domaine des technologies web.
PHP 4 est mort, officiellement enterré par ses inventeurs ! Ils découragent quiconque d'utiliser ces anciennes versions de PHP, sous quelque forme que ce soit.
Pour ces raisons, nous avons exclu tous les frameworks qui supportent encore PHP 4. Ainsi s'envolèrent
- CakePHP
- CodeIgniter
s'est envolé de notre liste. Nous voulons enseigner le développement web moderne, pas le commerce des antiquités !
Documentation
La quantité et la qualité de la documentation disponible est également un critère important. Tous les autres candidats disposent d'une documentation suffisante en ligne, Yii arrivant en dernière position. Symfony, avec 4 livres disponibles gratuitement (en PDF) et de nombreuses autres sources, occupe de loin la première place.
Comment cela fonctionne
Enfin, nous avons examiné les frameworks et créé de petits exemples d'applications, en nous inspirant des tutoriels de démarrage disponibles sur leurs sites Web respectifs. Nous avons donc parcouru les étapes de l'installation du framework, de la configuration, de la mise en place du projet, de la connexion à la base de données, de la création de modèles au développement d'une interface CRUD simple.
Au cours de ce processus, nous avons remarqué que le Zend Framework, en particulier, avait un impact très négatif. Un cadre de travail doit aider le développeur et le soulager de son travail. Au lieu de cela, nous nous sommes retrouvés à mettre en place nous-mêmes un ORM basé sur Zend, à développer notre propre concept de migration avec un SQL écrit par nous-mêmes pour la base de données et à écrire beaucoup de configurations.
Nous n'avons pas eu cet effet avec les autres cadres. La mise en route de la première application exécutable a été beaucoup plus rapide et fluide. La raison en est la structure du Zend Framework. Il est conçu plus comme une collection de composants PHP que comme un framework unifié. Ainsi, s'il offre une flexibilité maximale en matière de développement, il demande également plus d'efforts et est moins pratique que ses concurrents.
Une bonne comparaison peut être trouvée dans le sujet "Création de modèles et de bases de données". Si vous voulez, comparez la longueur (et la quantité de code à écrire) dans les deux tutoriels pour débutants de Zend et Symfony et jugez par vous-même :)
Résumé
Après avoir recueilli tous les critères et essayé tous les frameworks, Symfony 2 a été notre premier choix. Avec Zend, c'est le plus utilisé, il dispose d'une excellente documentation, il est très moderne (depuis PHP 5.3) et il est facile à utiliser. Nous ne voulions plus enseigner la version 1 stable actuelle, puisque la version 2 deviendra stable bientôt de toute façon. En d'autres termes, lorsque nous aurons terminé tout le matériel de formation, la version 1 sera de toute façon obsolète ;-)
Donc, c'est tout de mon côté. J'espère avoir pu vous expliquer de manière concluante pourquoi nous enseignerons Symfony à partir de maintenant et j'attends avec impatience vos commentaires. Avez-vous eu d'autres expériences avec des frameworks PHP, quel est votre préféré ?
Peut-être que je te verrai dans le cours de développeur Web de niveau 2 ?