Je peux comprendre votre confusion à partir de l'exemple que vous avez fourni. C'est vraiment une mauvaise façon d'utiliser une classe ... et ce n'est pas parce qu'une classe est utilisée que le système fonctionne.
Dans le cas d'Hybrid, ils utilisent simplement une classe pour nommer leurs fonctions dans l'espace de noms. Considérant que Hybrid est un framework de thèmes , ceci est fait pour que les thèmes enfants puissent réutiliser des noms de fonctions sans que le développeur ait à se soucier de la collision de noms. Dans de nombreux cas, un cadre de thème (thème parent) est si complexe que de nombreux développeurs de thèmes enfants ne comprendront jamais exactement ce qui se passe sous le capot.
Si Hybrid n'utilisait pas de structure de classe, les développeurs de thèmes enfants auraient besoin de connaître tous les appels de fonctions existants pour éviter de réutiliser des noms. Et oui, vous pouvez simplement préfixer toutes vos fonctions avec un slug unique, mais cela rend le code difficile à lire, difficile à maintenir et, par nature, non réutilisable si vous développez d'autres systèmes qui souhaitent utiliser les mêmes fonctionnalités.
Pour répondre à vos questions
Wtf? Quel est le point de faire cela? Évidemment, vous n'utiliserez pas deux instances ou plus du même thème, en même temps.
Non, vous n'utiliserez pas deux ou plusieurs instances du même thème. Mais comme je l’ai dit, considérez la structure de classe dans ce cas comme un espacement des noms des fonctions et non la création d’une instance d’objet traditionnelle. Tout regrouper dans une classe et l'instancier à appeler méthodes ( myClass->method();
) ou directement à méthodes ( myClass::method();
) est une manière très simple de mettre en forme des éléments d'espace de noms de manière lisible et réutilisable.
Bien sûr, vous pouvez toujours utiliser quelque chose comme à la myClass_method();
place, mais si vous souhaitez réutiliser l'un de ces codes dans un autre thème, dans un plug-in ou dans un autre cadre, vous devez revenir en arrière et modifier tous vos préfixes. Garder tout dans une classe est plus propre et vous permet de réaménager et de redéployer beaucoup plus rapidement.
Supposons que les plugins le font pour l'espace de noms (ce qui est ridicule), mais quel est le prétexte du thème? Est-ce que je manque quelque chose?
Dans la majorité des situations, je suis d'accord avec vous. Cependant, cette majorité diminue rapidement. J'héberge plusieurs sites sur une installation MultiSite qui utilisent des variantes du même thème. Plutôt que de recréer le même thème, encore et encore, avec des différences mineures, j'ai une seule "classe" pour le thème parent et tous les thèmes enfants étendent cette classe. Cela me permet de définir des fonctionnalités personnalisées pour chaque site tout en maintenant un sentiment général d'uniformité sur l'ensemble du réseau.
D'une part, les développeurs de thèmes peuvent choisir une approche basée sur les classes pour leurs fonctionnalités d'espaces de noms (ce qui n'est pas ridicule si vous travaillez dans un environnement dans lequel vous réutilisez des morceaux du même code, encore et encore). D'autre part, les développeurs de thèmes peuvent choisir une approche basée sur les classes pour une extensibilité facile par thèmes enfants.
Quel est l'avantage de coder un thème comme celui-ci?
Si vous utilisez uniquement Hybrid sur votre site, il y a peu de choses à savoir pour vous, en tant qu'utilisateur final. Si vous construisez un thème enfant pour Hybrid, l’espacement des noms et l’extensibilité présentent des avantages. Si vous travaillez pour ThemeHybrid , l’avantage réside dans la réutilisation rapide et efficace du code dans vos autres projets (Prototype, Leviathan, etc.).
Et si vous êtes un développeur de thème qui aime une fonctionnalité spécifique d'Hybrid mais pas le thème entier, l'avantage réside dans la réutilisation rapide et efficace du code dans votre projet non-Hybrid (en supposant qu'il s'agisse également de la GPL).