✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Korzystanie z wzorca rejestru w WordPress

8

Odbyłem kilka rozmów z różnymi znajomymi i innymi osobami na Twitterze na temat pojęcia zmiennych globalnych w językach programowania. Dla tych, którzy są nowicjuszami w programowaniu lub nie są pewni, dlaczego są złe:

Użycie zmiennych globalnych sprawia, że ​​oprogramowanie jest trudniejsze do odczytania i zrozumienia. Ponieważ dowolny kod w dowolnym miejscu programu może zmienić wartość zmiennej w dowolnym momencie, zrozumienie użycia zmiennej może pociągać za sobą zrozumienie dużej części programu.

Nie oznacza to, że nie mają one swojego zastosowania, ale jeśli interesuje Cię programowanie obiektowe (zwłaszcza w ustawieniach WordPress, w których zamierzasz używać PHP), ważne jest, aby zrozumieć lepsze alternatywy niż zmienne globalne.

Oznacza to, że istnieją sposoby pracy z przekazywaniem danych w aplikacji bez konieczności stosowania zmiennych globalnych. Jednym z takich sposobów jest wzorzec rejestru.

Wzorzec rejestru w WordPress

Po pierwsze, zauważ, że wzorce projektowe wykraczają poza każdy konkretny wzorzec. Dopóki język oferuje koncepcje obiektów (lub nawet abstrakcje), możliwe jest zaimplementowanie wzorca.

Ale po co zawracać sobie głowę używaniem tego?

Korzystanie z wzorca rejestru w WordPress

Zdjęcie Samuela Zellera na Unsplash

Krótko mówiąc, zapewnia zorientowany obiektowo sposób przekazywania informacji wokół aplikacji bez potrzeby stosowania zmiennych globalnych. Rzeczy takie jak kontenery do wstrzykiwania zależności również są do tego dobre, ale wykraczają poza zakres tego postu. Twierdzę również, że są chwile, w których mogą być przesadą w kontekście małych wtyczek.

Implementacja wzorca

Mając to na uwadze, jak możemy zaimplementować wzorzec rejestru w WordPressie, a następnie wykorzystać go w całej naszej pracy? Przyjrzyjmy się najpierw podstawowej strukturze wzoru :

Zauważ, że jego implementacja jest dość prosta:

  1. Klasa zawiera pojedynczą tablicę jako własność prywatną.
  2. Dane są dodawane do tablicy z określonym identyfikatorem.
  3. Dane można pobrać z wzorca z identyfikatorem.

Możesz nawet przenieść ten konkretny wzorzec na wyższy poziom, jeśli akceptuje on tylko klasę określonego typu (na przykład AbstractEvent), a następnie automatycznie wywoływać funkcję w klasie za każdym razem, gdy jest przekazywana (lub pobierana) z rejestru.

Ale to wchodzi w bardziej złożoną implementację, którą chciałbym w tym poście.

Konfigurowanie rejestru

Ze względu na naturę systemu haków WordPressa istnieje szczególny sposób, w jaki Rejestr musi zostać skonfigurowany, a następnie zarejestrowany w WordPressie.

Załóżmy, że pracujesz z wtyczką. W pliku startowym wtyczki zrób coś takiego:

Spowoduje to utworzenie rejestru, a następnie utworzenie odpowiedniego filtra, którego możemy później użyć we wtyczce, aby pobrać rejestr, a tym samym inne obsługiwane przez niego obiekty.

Korzystanie z rejestru

Aby dodać obiekt do rejestru, wywołaj funkcję add i przekaż unikalny identyfikator oraz instancję obiektu. Zauważ, że nasza obecna implementacja usunie wszystkie poprzednie wystąpienia obiektu, który ma ten sam klucz i zastąpi go tym, co do niego przekażemy.

Stamtąd możesz pobrać obiekty, które zostały zapisane w rejestrze:

I możesz ich używać tak samo, jak w każdy inny sposób. Ale to pozwala uniknąć używania singletonów, zmiennych globalnych lub innych niebezpiecznych rzeczy.

Słowo o testowalności

Kolejną zaletą, którą znalazłem w implementacji tego wzorca, jest to, że nie tylko pozwala on łatwiej pisać testy jednostkowe względem niego, ale także daje możliwość pisania testów względem obiektów, które może przechowywać.

Rozumiem przez to, że możesz pisać swoje klasy bardziej niezależne od WordPressa, oddzielając w ten sposób logikę domeny od podstawowej aplikacji i czyniąc je bardziej reprezentatywnymi dla danych, które mają utrzymywać.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów