Em muitos temas que eu vi (incluindo o TwentyEleven) e nos exemplos que encontrei on-line, ao criar o functions.php
arquivo para um tema, todas as funcionalidades são declaradas em um escopo global. Para esclarecer, é assim que um arquivo de funções típico se parece:
function my_theme_do_foo() { // ... }
function my_theme_do_bar() { // ... }
add_action( 'foo_hook', 'my_theme_do_foo' );
Parece-me que as coisas poderiam ser "encapsuladas" um pouco melhor se uma classe fosse usada:
class MyTheme {
function do_foo() { // ... }
function do_bar() { // ... }
}
$my_theme = new MyTheme();
add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );
As vantagens da segunda abordagem (aos meus humildes olhos):
- Nomes de funções mais curtos
- Acesso a variáveis de instância (a maior vantagem da IMO)
- Nenhuma função global
As desvantagens:
- O nome da classe ainda pode causar conflitos
- Não é tão claro "personalizar" com um tema filho (teria que estender uma classe pai)
- A maioria dos temas não é assim, então você estaria contrariando a tendência
Provavelmente estou ignorando algumas coisas, mas estou me perguntando por que não adotar a abordagem OOP? Parece um pouco "mais limpo" para mim, se é que alguma coisa. Talvez eu esteja enganado?
Eu sou bastante novo no desenvolvimento de temas para WordPress, então me desculpe se esse é um conhecimento comum na comunidade WP :). Apenas tentando aprender por que as coisas são do jeito que são.