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

Szybkie prototypowanie z WordPress: analiza koncepcji

14

W poprzednim poście zacząłem przechodzić przez proces przekształcania pomysłu na wtyczkę, która szybko ją prototypuje, w coś, co działa w WordPressie. I chociaż to działa, niekoniecznie jest zgodne z zasadami zorientowanymi obiektowo, ani nie jest to miejsce, w którym możemy łatwo dodawać funkcje.

Nie, to nie jest argument, dlaczego orientacja obiektowa jest lepsza. Tak się składa, że ​​jest to mój ulubiony sposób pisania kodu, więc podchodzę do tego w ten sposób.

Wiem, że przykładowy kod, który podaję, jest prosty i wiem, że można sprawić, że coś takiego można pozostawić bez zmian. Ale chodzi o to, aby pokazać, jak wziąć koncepcję, stworzyć jej prototyp, a następnie przenieść ją do czegoś, co jest zgodne z zasadami zorientowanymi obiektowo.

Z mojego doświadczenia wynika, że ​​jest to o wiele trudniejsze od samego początku na złożonym przykładzie. jeśli stracisz czytelników od samego początku, to jaka jest nadzieja, że ​​zrozumieją, co nadchodzi?

Mając to na uwadze, przyjrzymy się kodowi z poprzedniego postu i przeprowadzimy na nim trochę analizy koncepcji, aby zobaczyć, co może dobrze działać w klasie i jak możemy zacząć organizować ją za pomocą klas, przestrzenie nazw i tak dalej.

Analiza koncepcji

Kiedykolwiek przychodzi do programowania, tak łatwo jest chcieć natychmiast przejść do pisania kodu, a następnie zmusić go do złożenia, aż zrobi coś, czego chcemy.

A kiedy to zadziała, wydaje się, że skończyliśmy i możemy przejść do następnego zadania. Ale w przypadku większych projektów nie zawsze tak jest. W rzeczywistości często lepiej jest przeprowadzić trochę analizy koncepcji analizy obiektowej w swoim projekcie przed przejściem do przodu.

Proste przejście do kodowania nie zawsze jest najlepszym podejściem.

Przypadek do analizy

Przykład: w momencie pisania tego tekstu, jeden z moich kolegów z zespołu i ja dyskutujemy, czy powinniśmy rozszerzyć klasę, czy napisać nową klasę do obsługi informacji o geolokalizacji dla danych pobranych z Google Maps API.

Czy mogę to zrobić i napisać coś, co działa? Pewny. Ale czy dobrze zintegruje się z aplikacją? Nie bez analizy koncepcji, planowania i koordynacji z resztą systemu.

I o to właśnie chodzi w analizie.

Analizowanie naszej pracy

Więc co to oznacza dla wtyczki, którą oglądaliśmy wczoraj? W tej chwili mamy:

  • funkcja odpowiedzialna za tworzenie metaboxa i wyświetlanie w nim zawartości,
  • funkcja odpytywania bazy danych i pobierania ostatnich najnowszych postów,
  • funkcja wyświetlania wyników w metabox
  • funkcja do wyświetlania wiadomości, gdy w meta polu nie ma wyników

Co więcej, wiele z tych funkcji jest powiązanych z hookami, które są częścią API WordPressa. Mianowicie, funkcja tworzenia metaboxa jest podłączona do WordPressa, a towarzysząca mu funkcja renderowania wyświetlacza jest częścią tego samego komponentu.

Następnie mamy funkcjonalność do odpytywania bazy danych oraz funkcje bezpośrednio związane z widokami.

Jak więc mogłoby to wyglądać, gdybyśmy podzielili to na różne klasy i pliki, które pomogłyby stworzyć to w sposób bardziej zorientowany obiektowo?

Brak jednego rozwiązania

Nie ma jednego rozwiązania, a niektóre rozwiązania są znacznie bardziej zaawansowane niż inne. Ale ponieważ staram się zachować równowagę, zamierzam podejść do tego w prostszy sposób niż za dużo pracy z abstrakcją, dziedziczeniem, interfejsami i tym wszystkim.

Koncentrowanie się na tym, co mamy

Na razie skupmy się na poszczególnych zajęciach i obowiązkach, jakie mogą pełnić. Na przykład:

  • Myślę, że będziemy potrzebować klasy, która reprezentuje pole meta. Powinno to być odpowiedzialne za stworzenie pola meta.
  • Będziemy też potrzebować klasy odpowiedzialnej za wyświetlanie zawartości pola meta. Możesz pomyśleć, że dołączenie funkcji do klasy dla pola meta działa dobrze. To robi; jeśli jednak chcesz myśleć o każdej klasie jako o pojedynczej odpowiedzialności, możemy utworzyć klasę specjalnie dla wyświetlacza i specjalnie dla pola meta, a następnie wstrzyknąć ekran do pola meta podczas tworzenia instancji. Porozmawiamy o tym później.

W tym momencie nasz diagram może wyglądać mniej więcej tak:

Rozkładanie meta boxu.

Następnie musimy rozważyć inną funkcjonalność. Mianowicie funkcjonalność wyświetlania wyników w polu meta i funkcjonalność wyświetlania wyników, gdy ich nie ma.

Aby wyświetlić cokolwiek w polu meta, musimy mieć sposób na zapytanie bazy danych w celu pobrania wyników. Stamtąd musimy być w stanie określić, czy istnieją wyniki, a jeśli nie, a następnie wprowadzić te wyniki do widoku.

Biorąc pod uwagę te informacje, wygląda na to, że potrzebujemy klasy do odpytywania bazy danych, a następnie potrzebujemy klasy, aby rozszerzyć komunikat na wyświetlanie pola meta.

Być może jeden ze sposobów organizacji zajęć wyglądałby tak:

Szybkie prototypowanie z WordPress: analiza koncepcji

Przeszukiwanie bazy danych i przygotowywanie wiadomości.

Ostateczna wersja diagramu może być trochę ciasna, ale ostatecznie patrzymy na coś takiego:

Szybkie prototypowanie z WordPress: analiza koncepcji

Ostateczna organizacja naszych zajęć.

Do celów wyjaśnienia:

  • Program pobierający posty pyta bazę danych o ostatnie trzy najnowsze posty.
  • Komunikator pocztowy określi, którą wiadomość wstawić na wyświetlacz.
  • Wyświetlacz wyświetli ustawiony komunikat.
  • Metabox wyrenderuje swoje wyświetlanie w przeglądarce internetowej.

Więc zasadniczo wzięliśmy kilka funkcji, które były podłączone do WordPressa i podzieliliśmy je na komponenty, które mogą się ze sobą komunikować, z których każda jest stosunkowo łatwa w obsłudze i nie wykonuje więcej niż jednej pracy.

Konwersja na kod

Teraz, gdy mamy pomysł, jak przekonwertować poprzednią koncepcję na kod, przyjrzymy się, jak to zrobić w kilku następnych artykułach.

Zauważ, że sposób, w jaki zdecydujesz się zaimplementować swój kod lub zaprojektować swoje klasy, może być nieco inny niż to, co mam powyżej i możesz mieć sugestie, jak lepiej zorganizować to, co powyżej. Jeśli tak jest, zostaw komentarz.

W następnym poście przyjrzymy się przekształceniu tego w funkcjonalny kod, a następnie przyjrzymy się zorganizowaniu tego we właściwe przestrzenie nazw i właściwą organizację plików.

Posty z serii

  1. Szybkie prototypowanie z WordPress: od koncepcji do wtyczki
  2. Szybkie prototypowanie z WordPress: analiza koncepcji
  3. Szybkie prototypowanie: Prototypowanie do kodu, część 1
  4. Szybkie prototypowanie: Prototypowanie do kodu, część 2
  5. Szybkie prototypowanie: Przedstawiamy automatyczne ładowanie

Ź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