In vielen Themen, die ich gesehen habe (einschließlich TwentyEleven), und in den Beispielen, die ich online gefunden habe, werden beim Erstellen der functions.php
Datei für ein Thema alle Funktionen in einem globalen Bereich deklariert. Zur Verdeutlichung sieht eine typische Funktionsdatei folgendermaßen aus:
function my_theme_do_foo() { // ... }
function my_theme_do_bar() { // ... }
add_action( 'foo_hook', 'my_theme_do_foo' );
Es scheint mir, dass die Dinge ein wenig besser "eingekapselt" werden könnten, wenn eine Klasse verwendet würde:
class MyTheme {
function do_foo() { // ... }
function do_bar() { // ... }
}
$my_theme = new MyTheme();
add_action( 'foo_hook', array( &$my_theme, 'do_foo' ) );
Die Vorteile des zweiten Ansatzes (in meinen bescheidenen Augen):
- Kürzere Funktionsnamen
- Zugriff auf Instanzvariablen (der größte Vorteil IMO)
- Keine globalen Funktionen
Die Nachteile:
- Der Klassenname kann weiterhin Konflikte verursachen
- Nicht so klar, mit einem untergeordneten Thema "anzupassen" (müsste eine übergeordnete Klasse erweitern)
- Die meisten Themen haben es nicht so gemacht, also würden Sie sich dem Trend widersetzen
Ich übersehen wahrscheinlich einige Dinge, aber ich frage mich, warum ich nicht den OOP-Ansatz wählen sollte. Es fühlt sich für mich ein bisschen "sauberer" an, wenn überhaupt. Vielleicht irre ich mich?
Ich bin ziemlich neu in der Entwicklung von WordPress-Themes, also vergib mir, wenn dies in der WP-Community allgemein bekannt ist :). Ich versuche nur zu lernen, warum die Dinge so sind, wie sie sind.