Eu posso entender sua confusão com base no exemplo que você forneceu. Essa é realmente uma maneira ruim de usar uma classe ... e só porque uma classe é usada, não faz um sistema OOP.
No caso do Hybrid, eles estão usando apenas uma classe para definir o namespace de suas funções. Considerando que o Hybrid é um tema framework , isso é feito para que os temas filhos possam reutilizar os nomes das funções sem que o desenvolvedor precise se preocupar com a colisão de nomes. Em muitos casos, uma estrutura de tema (tema pai) é tão complexa, muitos desenvolvedores de tema filho nunca entenderão exatamente o que acontece sob o capô.
Se o Hybrid não usasse uma estrutura de classe, os desenvolvedores de tema filho precisariam saber quais eram todas as chamadas de função existentes para que pudessem evitar a reutilização de nomes. E sim, você poderia prefixar todas as suas funções com um slug exclusivo, mas isso torna o código difícil de ler, difícil de manter e inerentemente não reutilizável se você desenvolver outros sistemas que desejem usar a mesma funcionalidade. / p>
Para responder às suas perguntas
Wtf? Qual é o sentido de fazer isso? Obviamente, você não usará duas ou mais instâncias do mesmo tema ao mesmo tempo.
Não, você não usará duas ou mais instâncias do mesmo tema. Mas, como eu disse, pense na estrutura de classes nesse caso como namespacing das funções, não criando uma instância de objeto tradicional. Agrupar tudo em uma classe e instanciá-lo para chamar métodos ( myClass->method();
) ou chamar métodos diretamente ( myClass::method();
) é uma maneira muito clara de classificar as coisas de maneira legível e reutilizável.
Claro que você sempre pode usar algo como myClass_method();
, mas se você quiser reutilizar qualquer um desses códigos em outro tema, em um plug-in ou em outra estrutura, você terá que voltar e mudar todos os seus prefixos. Manter tudo em uma classe é mais limpo e permite que você desenvolva e reimplante muito mais rapidamente.
Vamos supor que os plugins façam isso pelo namespace (o que é ridículo), mas qual é a desculpa do tema? Estou faltando alguma coisa?
Na maioria das situações, eu concordo com você. No entanto, essa maioria está diminuindo rapidamente. Eu hospedo vários sites em uma instalação MultiSite que usa variações do mesmo tema. Em vez de recriar o mesmo tema repetidas vezes com pequenas diferenças, tenho uma única "classe" para o tema pai e todos os temas filhos estendem essa classe. Isso permite que eu defina a funcionalidade personalizada para cada site e, ao mesmo tempo, mantenha um senso geral de uniformidade em toda a rede.
Por um lado, os desenvolvedores de temas podem escolher uma abordagem baseada em classes para definir o namespace de sua funcionalidade (o que não é ridículo se você trabalha em um ambiente onde você reutiliza partes do mesmo código várias vezes). Por outro lado, os desenvolvedores de temas podem escolher uma abordagem baseada em classe para facilitar a extensibilidade por temas filhos.
Qual é a vantagem de codificar um tema como este?
Se você estiver usando apenas o Hybrid em seu site, há pouco a saber sobre a vantagem para você como usuário final. Se você está criando um tema filho para o Hybrid, há vantagens de namespacing e extensibilidade. Se você trabalha para ThemeHybrid , a vantagem está na reutilização rápida e eficiente de códigos em seus outros projetos (Protótipo, Leviatã, etc.).
E se você é um desenvolvedor de temas que gosta de um recurso específico do Hybrid, mas não do tema inteiro, a vantagem está na rápida e eficiente reutilização de código em seu projeto não híbrido (supondo que também seja GPL).