1. WordPress, un framework complet?
Ses forces et ses faiblesses
ConFoo - 11 mars 2011
Friday, March 11, 2011
2. Ma personne.
• Développeur web depuis début 2000
• Développe des sites de marketeux
• Des plateformes internes
• Mordu du web
• Fanboy de l’open source
• Je suis venu défendre WordPress dans un
monde de MVC
• Ce support visuel est optionel
Friday, March 11, 2011
3. Pourquoi?
(Philosophons un peu)
Friday, March 11, 2011
4. Juste avant de commencer
(Parce qu’il faut bien garder un peu de suspense)
http://codex.wordpress.org/Theme_Frameworks
Ce n’est pas des frameworks. Les themes frameworks ne sont pas
des frameworks, mais bien des tentatives pour accélérer le
développement de thème.
Aucun n’essait d’améliorer les capacités MVC ou ORM de
WordPress. C’est un truc pour les designers wannabe
développeurs.
Friday, March 11, 2011
5. Qu’est-ce qu’un Framework
(Il faut bien commencer quelque part)
• MVC
• Modulable
• Réutilisation du code
• Rapide
• Permet la collaboration
...Si quelqu’un veut contribuer à Wikipedia, l’article n’est pas écoeurant
Friday, March 11, 2011
6. Les frameworks PHP
(...)
• Il y en a presque plus que des blogues en Django
• ... plus que des thèmes WordPress
• THEY SU..
• Il n’y en a pas un pour racheter l’autre
Friday, March 11, 2011
7. Les pêchés mortels des
Frameworks PHP
(Symfony, je te frappe dessus parce que tu es le meilleur en PHP ;) )
Friday, March 11, 2011
8. Manque de direction
Source: http://www.phpframeworks.com/
Friday, March 11, 2011
10. Prétendre que PHP est un OOL
(Object Oriented Language)
PHP n’a simplement pas été conçu comme un langage orienté
objet. Ce qui fait la force des frameworks Ruby, Python, Java et
C# de ce monde est la flexibilité de leur modèle objet.
Friday, March 11, 2011
13. WordPress est facile
• Pour les usagés
• Les designers
• Vous (les développeurs)
Friday, March 11, 2011
14. WordPress est Modulable
• En version 3.1 WordPress possède 1469 hooks et
filters:
• AJAX, Admin, connexion à la BD, récupération du
contenu, validation des données, etc.
• WordPress donne le contrôle aux développeurs sur:
• Les URLs avec WP_Rewrite
• Le modèle de donnée avec la taxonomie
Friday, March 11, 2011
15. WordPress est Rapide
• Fonctionnel après son installation
• Prêt à l’utilisation ou au développement
• Minimum de configuration
• Batteries included
Friday, March 11, 2011
16. WordPress est MVC
(Ça dépend seulement de la définition)
• Suffit de se donner la discipline
• L’application est composée de plugins
• Chaque plugin a son modèle de données
• Chaque plugin a son/ses contrôleurs pour gérer les
actions
• Les views sont tous les fichiers du thème. Utiliser
functions.php pour interfacer les contrôleurs et
exposer des fonctions de templating au designer
Friday, March 11, 2011
17. M: Le modèle
Un exemple https://gist.github.com/858502
Ici on crée un type de donnée «Idée» et on lui donne un attribut
«status»
• Abstraction complète du SQL
• Plus long que la plupart de FW,
• Gestion des accès intégrés
• Beaucoup d’option de configuration
Friday, March 11, 2011
18. V: La «View»
Un exemple https://gist.github.com/858535
Avec functions.php on expose des fonctions du contrôleur,
ensuite les views sont laissés au designer.
• Les validations de fallback sont faites
• On enlève du contrôleur la gestion du UI
• Tout le monde est plus content
• Dans WordPress, la Loop gère tous les types de
données
• On ajuste en fontion des informations obtenues par le
contrôleur.
Friday, March 11, 2011
19. C: Le contrôleur
Un exemple https://gist.github.com/860392
Plutôt inexistant
• Gestion faite par l’admin
• Utilisation de fonctions génériques
• Hooks pour modifications
Friday, March 11, 2011
20. Soyons clair
Je pense que WordPress a le potentiel de devenir un framework
Friday, March 11, 2011
21. Ses faiblesses
(Je commence toujours par les mauvaises nouvelles)
• Pas été pensé pour devenir un framework
• Ne se publicise pas comme un framework
• Pas de ORM
• Architecture mal documentée
• N’est pas MVC (vraiment...?)
• La gestion des URLs
Friday, March 11, 2011
22. Ses forces
(Là on commence à jaser)
• Communauté ÉPIC
• Maturité du code
• Division des rôles
• Cycle de développement actif
• Est MVC (vraiment...?)
• Supporté partout
• Utilise l’OOP quand c’est utile, pas seulement pour faire
beau
Friday, March 11, 2011
23. Et j’ai fait un projet
(Dans le vrai monde, avec un client, des deadlines et des collaborateurs)
Friday, March 11, 2011
25. L’expérience ne fut pas parfaite
(mais...)
• La séparation des rôles est nickel
• Il n’y a pas de gestion directe des données en SQL
• Les parties du code sont indépendantes
• Les conventions ne sont pas toujours respectées
• Il y a un peu de code des contrôleurs dans certaines
views
Friday, March 11, 2011
26. Donc
(Parce que ça prend des conclusions...)
Friday, March 11, 2011
27. • Framework fonctionnel, mais il faut savoir pardonner
• Manque de doc
• Manque un peu de formalisation
• Doit être bien encadré pour performer de manière
optimale
• Utilisez GIT quand vous faites ce type d’expérience
Friday, March 11, 2011
28. Jsute avant de finir
• WordPress devrait être le frontend de votre web
• Il le font mieux que vous (et moi)
• Data storage -> REST -> WordPress -> Client
Et vous allez voir...!
Friday, March 11, 2011