- Statut : non résolu
- Ce sujet contient 61 réponses, 14 participants et a été mis à jour pour la dernière fois par
AmO, le il y a 18 années et 3 mois.
-
AuteurMessages
-
30 novembre 2006 à 17 h 38 min #449528
Bonjour,
J’utilise WordPress depuis quelques temps,
et j’ai été amené à bidouiller pas mal du coté du
système de templates pour développer mon porpre
thème.J’en arrive à la conclusion suivante : Worpdress
a été codé avec des moufles. Je veux dire, en tout
cas l’API de template est absolument dégueulasse et
ne donne vraiment pas envie d’aller voir le reste du
code.Les erreurs de cette API sont double : Erreurs de
conception / de codage.Voici une liste non exhaustaive de mes doleances :
o Utilisation a outrance de fonctions pour chaque champ,
dépendant d’un contexte scrict d’execution et de variables
globales le fameux ‘The_Loop’, la ou la programmation object
serait bien plus légere et souple.
Pourquoi reinventer une semantique lourde avec ces
concept fumeux de ‘tags’ ?Ou est l’utilite d’ecrire
while(the_post()) {
the_title();
}
au lieu de :
foreach($posts as post) {
echo $post->title;
}
o Melange de fonctions d’affichage et de fonction remvoyant une valeur
sans aucnue uniformite dans les options :
A quoi sert t’il de developper une fonction affichant un truc et une autre
la renvoyant. php fournit des fonctions pour l’affichage …
the_title() ?> est equivalent a
= get_title() ?>o Soupe de mélange entre presentationet contenu.
Pourquoi diable la fonction list_cats s’occupe t’elle de formattage ?
Et si je veux pas de liste dans des- ? Je developpe un neime
plugin bancal pour faire une copie personnalisee de cette fonction ?
Une liste d’objects bien faits feriaent l’affaire, je sais faire une boucle :
$post->getCategories()
ou toutes les categories
$wp->allCategories();
Et un moyen de descendre dedans recursivement, genre
$cat->getChildCats();o Passage de parametres farfelus.
J’ai jamais compris pourquoi il fallait passer
les parametres avec une chaine occulte genre « addchild=1&toto=truc »
php gere les passage de parametres optionnels et les parametres par defaut.o Les globales en folies :
La gestion de variables globales en php est une horreur, et son mecanisme
va a l’encontre des choix de tous les autres langages de programmation.
Pourquoi ne pas tout regrouper dans un unique object contenant tous
les object ‘contextuels’ nexcessaire a l’affichage de chaque page :
genre
$wp->
/* Des parametres globaux */
blogTitle
rssEntriesURL
rssCommentsURL
….
allPages (liste des pages)
allCategories (liste des categories)
recentPosts (liste d’object post)/* Les information sur le conetnu courant a afficher*/
currentEntries (list des posts/pages selectionnees)
context (contexte d’affichage : soit un unique post ()single, ou une categories, des mots clefs de recherche, etc)
currPageIdx
NbPages (pour la pagination)Le tout avec une utilisation intelligente de la programmtion object
pour se debarrasser de ce fouilli de fonctions inutiles.Tout ca fait que le developpement de themes sous WordPress est lourd
et sale : C’est une suite de bidouillages tordus pour contourner
de gros problemes de conception.Voila,
Qu’en pensez vous ? Par ou commencer pour proposer une refonte en ce sens
du code de wordpress (je veux bien aider).Raphael
Modération de BenKenobi : Modification du titre
30 novembre 2006 à 18 h 06 min #585459Wouaou, avec une liste de griefs aussi longue serait temps de songer à migrer sur autre script de blog Raphaël, non ?
Sinon Wp france ne s’occupe pas de développement sur le coeur du script.
Essaye de voir, point par point, por tes doléance sur le Trac
http://trac.wordpress.org/Ou t’inscrire à la wp-hackers mailing list pour aller encore plus loin dans les discussions poussées autour du code
http://wordpress.org/development/2004/06/hackers/Mais je te le répète, si WP t’apporte autant de douleur dans ta vie de dév-PHP de tous les jours, logiquement, tu devrais migrer vers une autre solution.
30 novembre 2006 à 18 h 56 min #585460S’il s’avère que toutes tes propositions sont cohérentes et justifiées, alors tu pourrais effectivement en faire profiter les concepteurs de WordPress, comme Mathieu viens de le dire… ce serait ainsi toute la communauté de WP qui en profiterait dans des mises à jours ultérieures.
Sinon, ton titre est un peu vulgaire à mon goût…
30 novembre 2006 à 19 h 25 min #585461cdvddt wrote:o Utilisation a outrance de fonctions pour chaque champ,
dépendant d’un contexte scrict d’execution et de variables
globales le fameux ‘The_Loop’, la ou la programmation object
serait bien plus légere et souple.
Pourquoi reinventer une semantique lourde avec ces
concept fumeux de ‘tags’ ?Ou est l’utilite d’ecrire
while(the_post()) {
the_title();
}
au lieu de :
foreach($posts as post) {
echo $post->title;
}
Totalement d’accord avec toi !
Ca se lit tout aussi simplement (voire plus quand on parle anglais) et les fonctions étant « built-in » c’est très rapide 🙂cdvddt wrote:o Melange de fonctions d’affichage et de fonction remvoyant une valeur
sans aucnue uniformite dans les options :
A quoi sert t’il de developper une fonction affichant un truc et une autre
la renvoyant. php fournit des fonctions pour l’affichage …
est equivalent aLà-dessus, je ne suis pas totalement d’accord: la synthaxe est obsolète et non supportée sur tous les serveurs, or WordPress a été pensé pour être le plus compatible possible 😉
De plus, il est parfois utile de récupérer une donnée à un endroit, par exemple pour la passer en paramètre à une fonction, et de l’afficher directement à un autre endroit (exemple avec une donnée de configuration que l’on affiche sur la page et qu’on passe en argument à une fonction pour lui donner une action particulière 😉 )
cdvddt wrote:o Soupe de mélange entre presentationet contenu.
Pourquoi diable la fonction list_cats s’occupe t’elle de formattage ?
Et si je veux pas de liste dans des- ? Je developpe un neime
plugin bancal pour faire une copie personnalisee de cette fonction ?
Une liste d’objects bien faits feriaent l’affaire, je sais faire une boucle :
$post->getCategories()
ou toutes les categories
$wp->allCategories();
Et un moyen de descendre dedans recursivement, genre
$cat->getChildCats();Totalement d’accord aussi, mais c’est tellement plus simple à gérer par des débutants…
cdvddt wrote:o Passage de parametres farfelus.
J’ai jamais compris pourquoi il fallait passer
les parametres avec une chaine occulte genre « addchild=1&toto=truc »
php gere les passage de parametres optionnels et les parametres par defaut.D’accord aussi, je n’ai jamais osé non plus regarder comment le core de WP interprétait ce genre de chaînes, mais à mon avis c’est à coup de bonnes grosses expressions rationnelles xD
cdvddt wrote:o Les globales en folies :
La gestion de variables globales en php est une horreur, et son mecanisme
va a l’encontre des choix de tous les autres langages de programmation.
Pourquoi ne pas tout regrouper dans un unique object contenant tous
les object ‘contextuels’ nexcessaire a l’affichage de chaque page :
genre
$wp->
/* Des parametres globaux */
blogTitle
rssEntriesURL
rssCommentsURL
….
allPages (liste des pages)
allCategories (liste des categories)
recentPosts (liste d’object post)/* Les information sur le conetnu courant a afficher*/
currentEntries (list des posts/pages selectionnees)
context (contexte d’affichage : soit un unique post ()single, ou une categories, des mots clefs de recherche, etc)
currPageIdx
NbPages (pour la pagination)Le tout avec une utilisation intelligente de la programmtion object
pour se debarrasser de ce fouilli de fonctions inutiles.+1 encore 😉
cdvddt wrote:Tout ca fait que le developpement de themes sous WordPress est lourd
et sale : C’est une suite de bidouillages tordus pour contourner
de gros problemes de conception.Voila,
Qu’en pensez vous ? Par ou commencer pour proposer une refonte en ce sens
du code de wordpress (je veux bien aider).Raphael
Je suis totalement d’accord avec toi, tes revendications sont clairement exprimées et justifiées… maintenant il faut convaincre la communauté, car ces modifications impliqueraient une refonte totale des thèmes et des plugins qui font la richesse de WordPress de par leur diversité 😉
Modération de BenKenobi : Modification du titre
=> +1 pour BenKenobi, j’ai failli avoir une attaque quand j’ai vus les nouveaux messages30 novembre 2006 à 19 h 34 min #585462globalement je suis assez d’accord. Quid des requetes get_var() qui ramenent une colonne d’une table, et 2 lignes plus loin une autre requete qui ramene une autre colonne de la meme ligne ? Et quid encore de ces memes requetes exécutées 10, 15 fois dans le chargement d’une page ? Je sais que mysql a des fonctions de cache sympathiques, mais quand meme…
Globalement je te conseille lifetype (anciennement plog) si tu attaches vraiment de l’importance au code. Tout est OO, tout est beau, c’est vraiment bien fichu. Par contre, l’avantage de WP, c’est les milliers de thèmes dispos, les plugins, etc. La aussi, rein a voir du coté de lifetype…30 novembre 2006 à 19 h 41 min #585463LifeType a l’air assez lourd, avec ses centaines de classes (le répertoire /class/ contient 676 fichiers dont les 3/4 sont des classes) …
C’est ça le problème avec la POO aujourd’hui: soit on n’en fait pas du tout, soit on en fait trop 😕 😕Sinon je suis aussi d’accord pour la (très) mauvaise gestion des flux SQL par WordPress !
(Note aux admins 😇) Pourquoi ne pas se faire une page Wishlist pour la prochaine version de WordPress où on mettrait (en anglais bien sûr) nos « revendications » en argumentant pour convaincre les développeurs ?
1 décembre 2006 à 10 h 16 min #585464Ok merci.
Ca fait plaisir de voir que vous etes du meme avis.Pour le titre un peu grossier, desole, c’etait fait sur le coup de
l’enervement.
Et comme chacun sait, il ne faut jamais faire de mail/post sur la coup de
l’enervement.Je vais traduire mes demandes en anglais et voir sur le site
anglophone.Raphael
1 décembre 2006 à 10 h 27 min #585465Tout ne me semble pas justifié, mais comme d’hab’ dans l’Open Source, si tu as de meilleures idées, propose-les ! 🙂
1 décembre 2006 à 12 h 27 min #585466Et encore tu n’as regarder que l’API des templates…
C’est vrai que WordPress est mal codé, mais il fonctionne bien. Un mal pour un bien.
A toi de voir si ça te convient, sinon il existe beaucoup d’autres solutions. En terme de cohérence dans le code, je te conseille DotClear2 : full objet donc uniquement pour php5, encore en beta donc pas forcement stable, pas totalement documenté. Mais propre.
Nous ne devrions pas avoir à choisir entre l’état de l’art et l’efficacité mais c’est souvent le cas. (et pas que pour les blogs)
NB : pour les passages de paramètres « farfelus », il s’agit du format query_string comme dans les URL, donc php sait les interpréter nativement. http://php.net/manual/fr/function.parse-str.php
1 décembre 2006 à 14 h 13 min #585467Si on suit ta vision des choses.
Aucune application PHP existante (cms, blog) n’est bien codée !C’est une vision utopique que tu as la.
Le modèle objet… d’accord c’est bien.
La séparation des couches métiers, c’est une révolution dans les méthodes de dévelopement certes !Mais toutes ces fonctionnalité ne sont disponibles (pleinement) que depuis PHP5, donc c’est récent !
WordPress n’est finalement qu’un Fork de b2 evolutionIl a été développé bien avant le PHP5 et cet engouement pour un développement orienté Objet.
Comme me dit, mon ami, Kevin, ce que tu veux finalement cdvddt, c’est une application « développpé à la .NET »
(les connaisseurs comprendronts)Pour moi, l’API Template de WordPress est adapté pour les personnes ayant peu de connaissance en php et en programmation en général.
Dès que tu souhaite customiser un WordPress, tu sera obligé de passer par des plugins/hacks.(
(ce que je fais dans ma boite)Donc la force de WordPress, c’est une API Template, très très documentée, et surtout très « Ready to USE » au détriment des performances !
(et si tu trouves WordPress si inadapté que ca, utilise un framework… ca correspondra surement plus à tes besoins…)
Ne pas confondre CMS et Framework…1 décembre 2006 à 14 h 21 min #585468Moi j’aimerai bien voir un site bien codé comme tu le dis !!!
et j’ai vu par expérience (certes courte mais expérience quand même) que bien codé != performant, après tu choisi tes objectifs,
de plus, si tu veux un CMS entièrement orienté objet avec un code « tout beau » (parceque plein de classe), prend en un en asp.net (langage génial pour ce genre de conception)
j’en connai justement un « très bien codé » : Community Server !!!
il est tellement génial que sa mise en production nécessite une formation de deboggeur ^^et pour finir, si le code de WordPress te déplaie tant que ca change de plateforme de publication !!!
(perso, je trouve pas WordPress super bien codé, mais il fonctionne très bien et je ne m’en plains pas !)1 décembre 2006 à 14 h 23 min #585469PunBB != Conception Objet
Bonne perf 🙂
1 décembre 2006 à 14 h 26 min #585470Le gros inconvénient de l’orienté objet est la facilité de compréhension et d’utilisation, donc pas pour le débutant !
Hors, je pense qu’il y a pas mal de débutant qui utilise WordPress et qui font des hacks dessus grâce à sa facilité d’utilisation et à sa documentation !!!1 décembre 2006 à 14 h 26 min #585471On peut meme dire :
Conception objet => Projet techniquement compliqué=> moins de contributeur => developpement moins rapide => moins d’extensions tierses => moins de fonctionnalités => moins populaire =>
SUPINFO en force la 🙂
Et sinon vive le Python ?A ce sujet vous saviez que Google est codé à 90% en Python ?
1 décembre 2006 à 14 h 54 min #585472En passant Lifetype et le moteur de template Smarty… c’est pas vraiment une référence… très loin même !
- ? Je developpe un neime
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.