Posso capire la tua confusione in base all'esempio che hai fornito. Questo è davvero un modo scarso di usare una classe ... e solo perché viene usata una classe, non rende un sistema OOP.
Nel caso di Hybrid, stanno semplicemente usando una classe per lo spazio dei nomi delle loro funzioni. Considerando che Hybrid è un framework di temi , questo viene fatto in modo che i temi secondari possano riutilizzare i nomi delle funzioni senza che lo sviluppatore debba preoccuparsi della collisione dei nomi. In molti casi, un framework di temi (tema genitore) è così complesso, molti sviluppatori di temi per bambini non capiranno mai esattamente cosa succede sotto il cofano.
Se Hybrid non utilizzava una struttura di classe, gli sviluppatori di temi figlio avrebbero bisogno di sapere quali erano tutte le chiamate di funzione esistenti per evitare di riutilizzare i nomi. E sì, potresti semplicemente aggiungere un prefisso a tutte le tue funzioni con una lumaca unica, ma ciò rende il codice difficile da leggere, difficile da mantenere e intrinsecamente non riutilizzabile se dovessi sviluppare altri sistemi che desiderano utilizzare la stessa funzionalità.
Per rispondere alle tue domande
Wtf? Che senso ha fare questo? Ovviamente non userete due o più istanze dello stesso tema, contemporaneamente.
No, non utilizzerai due o più istanze dello stesso tema. Ma come ho detto, in questo caso la struttura delle classi deve essere considerata come spaziatura dei nomi delle funzioni, non creazione di un'istanza di oggetto tradizionale. Raggruppare tutto insieme in una classe e istanziarlo per chiamare metodi ( myClass->method();
) o chiamare metodi direttamente ( myClass::method();
) è un modo molto pulito di spaziare le cose in modo leggibile e riutilizzabile.
Ovviamente potresti sempre usare qualcosa di simile myClass_method();
, ma se vuoi riutilizzare uno di questi codici in un altro tema, in un plug-in o in un altro quadro devi tornare indietro e cambiare tutti i tuoi prefissi. Mantenere tutto in una classe è più pulito e ti consente di riqualificare e ridistribuire molto più rapidamente.
Supponiamo che i plugin lo facciano per lo spazio dei nomi (che è ridicolo), ma qual è la scusa del tema? Mi sto perdendo qualcosa?
Nella maggior parte dei casi sono d'accordo con te. Tuttavia, quella maggioranza sta rapidamente calando. Ospito diversi siti su un'installazione MultiSite che utilizzano varianti dello stesso tema. Invece di ricreare lo stesso tema più e più volte con differenze minori, ho una sola "classe" per il tema principale e tutti i temi figlio estendono quella classe. Ciò mi consente di definire funzionalità personalizzate per ciascun sito pur mantenendo un senso generale di uniformità su tutta la rete.
Da un lato, gli sviluppatori di temi possono scegliere un approccio di classe basato sullo spazio dei nomi per le loro funzionalità (il che non è ridicolo se lavori in un ambiente in cui riutilizzi ripetutamente blocchi dello stesso codice). D'altro canto, gli sviluppatori di temi possono scegliere un approccio di classe per una facile estensibilità con temi figlio.
Qual è il vantaggio di codificare un tema come questo?
Se utilizzi solo Hybrid sul tuo sito, c'è poco da sapere per te come utente finale. Se stai creando un tema figlio per Hybrid, ci sono vantaggi di spaziatura dei nomi ed estensibilità. Se lavori per ThemeHybrid , il vantaggio sta nel riutilizzo del codice rapido ed efficiente in tutti gli altri tuoi progetti (Prototype, Leviathan, ecc.).
E se sei uno sviluppatore di temi a cui piace una funzionalità specifica di Hybrid ma non l'intero tema, il vantaggio sta nel riutilizzo del codice rapido ed efficiente nel tuo progetto non Hybrid (supponendo che sia anche GPL).