WordPress e l'approccio ibrido al paradigma OOP

In questo articolo illustreremo un principio del design del codice di WordPress, ossia il suo approccio ibrido rispetto al paradigma OOP.

Un CMS ibrido: OOP e programmazione procedurale in WordPress

Un mito comune riguardante WordPress è quello secondo cui questo CMS sia interamente procedurale nel suo design. Nulla di più falso: la scelta di design di WordPress è stata quella di costruire le fondamenta del CMS usando le classi e di esporre i metodi e le proprietà di tali classi tramite funzioni e variabili globali.

Ad esempio tutti noi sappiamo che il Loop principale di WordPress - ossia il ciclo attraverso cui vengono reperiti i contenuti - può di solito presentarsi come segue:

if( have_posts() ) {
    while( have_posts() ) {
        the_post();
    }
}

Apparentemente il codice è interamente procedurale. In realtà tutte le funzioni che abbiamo utilizzato non sono altro che una scorciatoia per il seguente codice OOP:

$loop = new WP_Query( array( 'posts_per_page' => -1 ) );
if( $loop->have_posts() ) {
     while( $loop->have_posts() ) {
         $loop->the_post();
     }
}

Lo stesso concetto vale per le altre funzioni: sono tutte basate sulla classe WP_Query. Più precisamente tutto ciò che in WordPress ha a che fare con il Loop - ossia con il reperimento dei contenuti (post, pagine, allegati) dal database - dipende direttamente da tale classe e non può in alcun modo prescindervi.

Ma non basta: anche la temporizzazione degli eventi, la gestione degli errori, la gestione delle richieste AJAX, la gestione delle query dirette al database, la gestione degli utenti e dei loro ruoli, la gestione dei menu di navigazione, i widget e altro ancora sono tutte funzionalità gestite da classi.

In pratica noi usiamo quasi sempre funzioni in WordPress ma in realtà stiamo usando le sue classi che restano nascoste dietro le quinte.

Torna su