Zlepšite vývoj WordPress tém a pluginov za použitia návrhových vzorov

Zlepšite vývoj WordPress tém a pluginov za použitia návrhových vzorov

Chcete vytvárať čistejší, lepšie udržiavateľný kód, ktorý sa dá v prostredí WordPressu oveľa ľahšie upravovať a rozvíjať? Obrovský rozdiel môže priniesť venovanie pozornosti konceptu návrhových vzorov. Ak použijete návrhové vzory počas vývoja správne, môže vám to ušetriť aj nejaký čas.

Čo sú návrhové vzory?

Návrhové vzory nám pomáhajú vytvárať softvér (samozrejme vrátane pluginov a tém WordPressu) na základe už získaných znalostí tých pred nami. Nemusíme znovu vynachádzať koleso na riešenie niektorých bežných problémov, ktoré sa stali už mnohým vývojárom, a môžeme sa zamerať na špecifiká našej problémovej oblasti a riešiť požiadavky zákazníkov.

Návrhový vzor je opakovateľné riešenie bežne sa opakujúceho problému v návrhu softvéru. Nie je možné ho použiť priamo, ale poskytuje nám šablónu na riešenie problému, ktorú je možné opakovane použiť v mnohých podobných situáciách.

Štúdium návrhových vzorov a ich použitie pri vytváraní nového kódu môže výrazne zlepšiť jeho štruktúru a celkovú funkčnosť a škálovateľnosť.

Po ich preštudovaní môžete tiež skúsiť refaktorovať svoj starší kód pomocou návrhových vzorov a uvidíte, že kód môže byť oveľa lepšie manažovateľný.

Vysvetlenie návrhových vzorov pomocou hookov

Začnime niečím už známym pre väčšinu vývojárov WordPressu, a to sú hooky, konkrétne akcie a filtre, ktoré sa vo WordPresse veľa používajú.

Ide o špecifickú implementáciu vzoru publisher-subscriber (pub-sub). V tomto vzore definujeme publisher (vydavateľa), subscriber (odberateľa) a message broker (sprostredkovateľa správ):

Vydavatelia (publisher) zverejnia nejakú konkrétnu udalosť, v našom prípade vykonaním do_action alebo apply_filters.

Odberatelia (subscriber) sa môžu prihlásiť k určitým udalostiam volaním add_action alebo add_filter a vykonať akciu, keď nastane udalosť, ku ktorej sa prihlásili.

Sprostredkovateľ (message broker), v našom prípade jadro WordPress, ktoré zaistí, aby boli všetci odberatelia informovaní o udalostiach vydavateľov, ku ktorým sú prihlásení.

Výhody vzoru publisher-subscriber (pub-sub)

To nám prináša mnoho výhod. Vydavateľ nemusí vedieť nič o svojom odberateľovi a ani odberatelia nemusia vedieť nič o vydavateľovi, pokiaľ vedia reagovať na vzniknutú udalosť. Aj keď deaktivujeme plugin, ktorý udalosti vytvára alebo odoberá, nespôsobí to žiadne chyby.

Myslím, že je veľmi užitočné nielen odoberať hooky z jadra WordPressu alebo pluginov, ale aj vytvárať hooky v kóde a stavať okolo nich svoj kód. Nielenže uľahčíte život ostatným vývojárom, pokiaľ sa rozhodnú stavať na funkčnosti vášho pluginu alebo témy, ale verte mi, že aj váš život bude oveľa jednoduchší pri implementácii novej funkčnosti do vášho pluginu alebo témy.

Vo WordPresse je možné použiť mnoho ďalších šikovných návrhových vzorov. Väčšinou vyžadujú trochu viac práce ako hooky, ale môžu znamenať obrovský rozdiel v dizajne vášho pluginu alebo témy. Skvelým príkladom návrhového vzoru, ktorý je možné použiť v kontexte WordPressu, je vzor singleton.

Vzor singleton

Tento vzor vyžaduje znalosť objektovo orientovaného programovania. Pokiaľ s ním nie ste oboznámení, najprv si ho preštudujte a potom sa môžete vrátiť k čítaniu.

Vzor singleton obmedzuje iniciáciu určitej triedy, takže je možné vytvoriť iba jednu inštanciu triedy. To sa dá dosiahnuť vytvorením súkromného konštruktora, statickej premennej pre uloženie inštancie a statickej funkcie getInstance(). Táto funkcia zodpovedá za vytvorenie inštancie objektu, pokiaľ už nie je vytvorený a uložený v premennej $instance. Príklad môžete vidieť nižšie

class SingletonClass
{
    private static $instance = null;

    private function __construct() {}

    public static function getInstance()
    {
        if (null === self::$instance) {
            self::$instance = new self();
        }
        return self::$instance;
    }
}

Zakaždým, keď sa nejaký kód pokúsi vytvoriť novú inštanciu tejto triedy, spustí sa chyba, pretože ide o súkromný konštruktor (toto je lepšie zdokumentovať, aby nedošlo k nedorozumeniu), takže jediný spôsob, ako získať inštanciu, je prostredníctvom našej funkcie getInstance().

Ako príklad použitia by bolo možné vytvoriť základnú triedu, ktorej zodpovednosťou je vytvoriť inštanciu všetkých našich funkcionalít pluginu. K tejto inštancii môžeme nadviazať napríklad konfiguračné dáta, takže sú prístupné odkiaľkoľvek v plugine a nie je nutné ich načítať z databázy alebo konfiguračného súboru viackrát, iba pri vytvorení jedinej inštancie tejto triedy.

Nepreháňajte to s používaním singleton vzoru

Myslím, že tento vzor je dobrým príkladom aj preto, že jeho prílišné používanie môže veľmi lákať, pretože v mnohých situáciách je ľahké vidieť výhody jeho použitia. Nehovorím, že by sa nemal používať, ale pred jeho použitím treba zvážiť aj jeho nevýhody.

Hlavnou nevýhodou tohto vzoru je podľa môjho názoru to, že zakaždým, keď tento vzor použijeme, viaže sa naša funkčnosť na priamu znalosť singletonovej triedy. To vytvára previazanosť kódu a môže spôsobiť, že ak sa rozhodneme niečo v singletone zmeniť, musíme urobiť mnoho zmien v celom projekte.

Pred použitím tohto vzoru alebo akéhokoľvek iného vzoru preto vždy všetko plánujte vopred, ale pokiaľ budete robiť dobrú prácu, bude to pre vás veľmi prínosné.

Ďalšie vzory

V tomto článku sme popísali dva návrhové vzory. Tieto vzory je možné použiť v mnohých situáciách pri vývoji WordPressu a môžu zlepšiť váš kód a myslenie.

Toto je však len veľmi malá ukážka toho, čo sa dá vďaka konceptu návrhových vzorov vytvoriť. Návrhových vzorov, ktoré je možné pri vývoji použiť, je oveľa viac. Ich štúdium a použitie by mohlo mať počas vývoja obrovský význam a mohlo by mať veľmi pozitívny vplyv na to, čo vyvíjate.

Pokiaľ vám nerobí problém angličtina, odporúčam vám použitie vzorov vyskúšať buď pomocou známej a kvalitnej literatúry, ako Design Patterns: Elements of Reusable Object-Oriented Software alebo Head First Design Patterns alebo na weboch ako je refactoring.guru, kde je mnoho vzorov dobre popísaných vrátane príkladov v PHP. V slovenskom jazyku vyšiel titul Návrhové vzory v PHP.

Zdieľajte na:

Ďalšie články:

Nenechajte si nič uniknúť!

Prihláste sa k odoberaniu Newsletteru, v ktorom zasielame najzaujímavejšie tipy pre úspešné webové stránky.