Eu posso entender sua confusão com base no exemplo que você forneceu. Essa é realmente uma maneira ruim de usar uma classe ... e apenas porque uma classe é usada, não torna o sistema OOP.
No caso do Hybrid, eles estão apenas usando uma classe para nomear suas funções. Considerando que o híbrido é uma estrutura de tema , 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 temas (tema principal) é tão complexa que muitos desenvolvedores de temas filhos nunca entenderão exatamente o que acontece.
Se o Hybrid não usasse uma estrutura de classe, os desenvolvedores de temas filhos precisariam saber quais eram todas as chamadas de função existentes para evitar a reutilização de nomes. E sim, você pode apenas prefixar todas as suas funções com uma lesma exclusiva, mas isso dificulta a leitura, a manutenção e o inerentemente não reutilizável, caso você desenvolva outros sistemas que desejam usar a mesma funcionalidade.
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 de funções, não criando uma instância de objeto tradicional. Agrupar tudo em uma classe e instanciar para chamar métodos ( myClass->method();
) ou chamar métodos diretamente ( myClass::method();
) é uma maneira muito clara de nomear as coisas de maneira legível e reutilizável.
É claro que você sempre pode usar algo como isso myClass_method();
, mas se quiser reutilizar esse código em outro tema, em um plug-in ou em outra estrutura, precisará voltar e alterar todos os seus prefixos. Manter tudo em uma classe é mais limpo e permite que você se desenvolva e reimplemente muito mais rapidamente.
Vamos supor que os plug-ins façam isso no namespace (o que é ridículo), mas qual é a desculpa do tema? Estou esquecendo de algo?
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 usam variações do mesmo tema. Em vez de recriar o mesmo tema repetidamente com pequenas diferenças, tenho uma única "classe" para o tema pai e todos os temas filhos estendem essa classe. Isso me permite definir a funcionalidade personalizada para cada site, mantendo um senso geral de uniformidade em toda a rede.
Por um lado, os desenvolvedores de temas podem escolher uma abordagem baseada em classe para namespace de suas funcionalidades (o que não é ridículo se você trabalha em um ambiente em que reutiliza partes do mesmo código repetidamente). 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 híbrido em seu site, há pouco para saber a vantagem para você como usuário final. Se você estiver criando um tema filho para o Hybrid, há vantagens no espaçamento de nomes e na extensibilidade. Se você trabalha para o ThemeHybrid , a vantagem está na reutilização rápida e eficiente de código nos outros projetos (Prototype, Leviathan, etc.).
E se você é um desenvolvedor de temas que gosta de um recurso específico do Hybrid, mas não de todo o tema, a vantagem está na reutilização rápida e eficiente do código no seu projeto não-Hybrid (supondo que também seja GPL).