Gli sviluppatori che usano WordPress adottano un approccio OOP raramente e quando lo fanno tendono a sovraccaricare il costruttore delle classi con svariati metodi richiamati all'interno di azioni o filtri di WordPress. Fortunatamente esiste una soluzione.
Di solito gli sviluppatori utilizzano il seguente pattern:
class MyClass {
public function __construct() {
add_action('wp_enqueue_scripts', array($this, 'addScripts'));
add_action('wp_enqueue_styles', array($this, 'addStyles'));
}
public function addScripts() {
// carica i file JavaScript
}
public function addStyles() {
// carica i file CSS
}
};
$myClass = new MyClass(); // lancia le action
Il problema è che maggiore è il numero di metodi da lanciare maggiore sarà il carico di lavoro del costruttore della classe. La soluzione è quella di utilizzare una sintassi alternativa. WordPress consente tale sintassi solo per la funzione add_filter()
:
add_filter('the_content', array('MyClass', 'addFilterToContent'));
add_filter('the_excerpt', array('MyClass', 'addFilterToExcerpt'));
In questo modo non c'è più bisogno di utilizzare il costruttore della classe per inizializzare il codice dei metodi. La sintassi di cui sopra è l'equivalente del tradizionale operatore di scope in PHP.