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

Narzędzia do pisania lepszego kodu WordPress: Kompozytor

36

Chociaż uważam, że tytuł tej serii i artykuły do ​​każdej z nich są wystarczająco jasne, są też inne rzeczy, które zamierzam zrobić z tą serią, w przeciwieństwie do innych serii, które napisałem do tego momentu.

W szczególności dwie rzeczy, które próbuję zrobić, to dwie:

  1. każdy artykuł powinien być stosunkowo zwięzły (w porównaniu do poprzednich artykułów),
  2. skoncentruj się na jednej rzeczy na raz i postaraj się, aby jej opis był krótki.

Ponieważ jest to treść dla członków, nie mam nic przeciwko, aby była nieco dłuższa niż zwykle, ale nie chcę też, aby była tak długa, że ​​trudno ją śledzić. Wolałabym, żeby była to krótka lektura z czymś praktycznym, co można wdrożyć po przeczytaniu każdego postu.

Jedną z rzeczy, która bardzo pomaga w pisaniu lepszego kodu WordPress, jest Composer.

Lepszy kod WordPress z Composer

Jeśli czytasz tego bloga od dłuższego czasu, to wiesz, że jestem fanem Composera (jednak daleko mi do jedynej osoby pracującej w WordPressie).

I chociaż napisałem na ten temat trochę materiału, nie napisałem czegoś w konkretnym celu, żebyście z tym zaczęli działać przed przeczytaniem jednego, krótkiego artykułu.

Do tego momentu będziemy musieli pójść na pewne kompromisy: Mianowicie, dostarczę przykładowy plik konfiguracyjny wraz ze sposobem na uporządkowanie katalogu wtyczek. Następnie w następnym poście wyjaśnię niektóre funkcje Composera.

Co to jest kompozytor?

Po pierwsze, ważne jest, aby zrozumieć, czym jest Composer. I łatwo jest wyrecytować definicję podaną na stronie, prawda? Jest to menedżer zależności dla PHP.

Ale najpierw, co to jest zależność?

Dla niektórych jednak rodzi się kilka pytań:

  • Co to jest zależność?
  • Dlaczego muszę nimi zarządzać?

A jeśli zagłębisz się nieco głębiej, może się okazać, że jest to menedżer pakietów, a to po prostu nasuwa te same pytania, z wyjątkiem tego, że po prostu zastępujesz „zależność" „pakietem” i wracasz do miejsca, w którym zacząłeś.

Zrobię więc, co w mojej mocy, aby było to jak najbardziej jasne:

Zależność lub pakiet, oprogramowanie używane w kodzie. Może to być coś, na czym opiera się funkcjonalność w czasie wykonywania, na przykład sposób tworzenia żądań HTTP, lub może to być biblioteka do konwersji tablic na XML.

Composer ułatwia uwzględnienie tych konkretnych pakietów w Twojej bibliotece, umożliwiając:

  • pobierz i dołącz pakiet do swojej wtyczki,
  • automatycznie ładuje twoją wtyczkę podczas działania,
  • ułatwienie wtyczce tworzenia instancji lub wywoływania wtyczki w razie potrzeby.

Oznacza to, że nie musimy zaśmiecać katalogów naszej bazy kodu wieloma ręcznie dodanymi plikami, a to oznacza, że ​​nie używamy  funkcji include ani require w całym miejscu.

Będą one miały swoje miejsce, które omówię w następnym poście, ale nie będą musiały być automatycznie instalowane. Zamiast tego będzie nimi zarządzał Composer. Stąd menedżer zależności część swojego celu.

Teraz, gdy już go zainstalowałeś, masz pewien kontekst.

Korzystanie z Kompozytora

Napisanie tej konkretnej sekcji jest nieco trudne, ponieważ wszyscy mamy inne potrzeby, prawda? Ale przynajmniej wszyscy możemy skorzystać z automatycznego ładowania.

To coś, z czego wszyscy możemy skorzystać.

Oto, co zrobię:

  1. Skonfiguruję podstawowy katalog wtyczek,
  2. Utwórz niezbędne pliki do obsługi wtyczki,
  3. Skonfiguruj prosty plik Composera,
  4. Wykonaj to

A potem pokażę ci wyniki. Możemy dostać się do bibliotek innych firm lub innych funkcji w przyszłym poście (lub przyszłej serii, naprawdę).

Ale jeśli nic więcej, to pokaże ci, jak użyć Composera do zdefiniowania autoloadera, abyś mógł skupić się na pisaniu kodu, a nie na zastanawianiu się, czy klasy są uwzględnione.

Katalog wtyczek

Generalnie struktury moich wtyczek wygląda następująco:

  • jest plik bootstrap odczytywany przez WordPress,
  • istnieje  katalog src, w którym przechowywane są wszystkie katalogi i pliki PHP,
  • istnieje  katalog zasobów najwyższego poziomu, w którym przechowywane są obrazy, pliki JavaScript i pliki Sass,
  • i istnieje  folder dostawcy utworzony przez Composer do przechowywania zależności i autoloadera.

Czasami może istnieć inny dziwny folder, taki jak folder inc lub lib, ale w tym momencie jest to bardzo nieregularne w rodzaju pracy, którą wykonuję. I dlatego nie będę się tym przejmować w tym poście.

Zamiast tego mój katalog wygląda mniej więcej tak.

Brak  katalogu dostawcy, ponieważ nie utworzyłem jeszcze pliku Composer, który jest jeszcze używany do wykonywania. Ale zobaczymy to przed końcem postu.

Przykładowe pliki

Pobierzmy przykładowy plik ustawiony we wtyczce. A kiedy mówię próbka, mam również na myśli proste.

Ten plik będzie miał jeden cel: wydrukowanie wiadomości na pulpicie po zalogowaniu się do WordPressa.

Narzędzia do pisania lepszego kodu WordPress: Kompozytor

Pamiętaj jednak, że celem tego nie jest pokazanie, jak napisać dobrze zbudowaną wtyczkę. Zamiast tego ma pokazać, jak wygenerować autoloader, aby pliki wtyczki były generowane automatycznie.

A więc bootstrap wtyczki wygląda tak :

<?php
/**
 * The plugin bootstrap file
 *
 * This file is read by WordPress to generate the plugin information in the plugin
 * admin area. This file also includes all of the dependencies used by the plugin,
 * registers the activation and deactivation functions, and defines a function
 * that starts the plugin.
 *
 * @since             0.1.0
 * @package           SamplePlugin
 *
 * @wordpress-plugin
 * Plugin Name:       Sample Plugin
 * Description:       A sample plugin used for a blog post.
 * Version:           0.1.0
 * Author:            Tom McFarlin
 * Author URI:        https://tommcfarlin.com
 * License:           GPL-3.0+
 * License URI:       http://www.gnu.org/licenses/gpl-3.0.txt
 */

namespace SamplePlugin;

use SamplePluginMessenger;

// This file called directly.
defined('WPINC') || die;

// Include the autoloader.
require_once __DIR__. '/vendor/autoload.php';

// Start the machine.
(new Messenger())->start();

A plik specjalnie odpowiedzialny za wyświetlanie wiadomości wygląda tak :

<?php

namespace SamplePlugin;

class Messenger
{
    /**
     * Subscribers the `adminNotices` function to the admin_notices hook in WordPress.
     */
    public function start()
    {
        add_action('admin_notices', [$this, 'adminNotices']);
    }

    /**
     * Displays the contents of the `message.html` file into the adminitrative notices
     * area on the dashboard whenever the plugin is active.
     */
    public function adminNotices()
    {
        if ('dashboard' !== get_current_screen()->id) {
            return;
        }

        include_once dirname(__FILE__). '/Admin/Views/message.html';
    }
}

A jeśli interesuje Cię plik HTML, jest on również prosty :

<div class="notice notice-success is-dismissible">
    <p>This is a message from the <strong>Sample Plugin</strong></p>
</div>

Mówiłem ci, że to proste.

Plik konfiguracyjny kompozytora

Ten konkretny plik może być tak prosty lub tak skomplikowany, jak to konieczne. W tym poście staramy się, aby było to proste. Celem tego posta jest po prostu nadanie mu nazwy, opisu, licencji, autorów, a następnie jak skonfigurować autoloader.

Zajrzyj tutaj, a następnie wyjaśnię, co widzisz tuż pod nim:

{
    "name": "tommcfarlin/sample-plugin",
    "description": "A sample plugin used for a blog post.",
    "type": "wordpress-plugin",
    "license": "GPL-3.0-or-later",
    "authors": [
      {
        "name": "Tom McFarlin",
        "email": "tom@tommcfarlin.com",
        "homepage": "https://tommcfarlin.com"
      }
    ],
      "autoload": {
        "psr-4": {
          "SamplePlugin": "src/"
        }
      }
  }

Po pierwsze, nazwa, opis, typ i licencja powinny być łatwe do zrozumienia. Obszar autorski również jest prosty.

Martwimy się teraz o automatyczne ładowanie. Powinno być całkiem jasne.

Krótko mówiąc, mamy dyrektywę dla PSR4, o  której możesz przeczytać więcej, a następnie gdzie znajduje się przestrzeń nazw. Tak więc w powyższym przykładzie wszystko w przestrzeni nazw SamplePlugin znajduje się w src. 

To właśnie mówi autoloaderowi, gdzie szukać określonych plików. A w naszym przypadku będzie to po prostu szukanie klasy Messenger .

Kompozytor biegający

Teraz, gdy omówiliśmy już podstawy pliku konfiguracyjnego Composera, nadszedł czas, aby go uruchomić. Przypomnij sobie, że twój katalog wtyczek powinien wyglądać mniej więcej tak:

Narzędzia do pisania lepszego kodu WordPress: Kompozytor

W swoim terminalu wpisz następujące polecenie :

Powinieneś zobaczyć coś takiego:

Narzędzia do pisania lepszego kodu WordPress: Kompozytor

Zakładając, że wszystko poszło dobrze, powinieneś być w stanie zalogować się do WordPressa i aktywować wtyczkę.

Widząc to wszystko razem

Po aktywacji wtyczki możesz przejść do pulpitu nawigacyjnego swojej witryny. Tam powinieneś zobaczyć informację do odrzucenia, która wygląda dokładnie tak, jak widzieliśmy na początku postu:

Narzędzia do pisania lepszego kodu WordPress: Kompozytor

Jeśli dotarłeś tak daleko, możesz iść! W przeciwnym razie sprawdź dokładnie składnię, aby upewnić się, że wszystko jest w porządku. Jeśli coś jest nie tak, prawdopodobnie nie byłbyś w stanie zajść tak daleko i zakładając, że masz ustawione podstawowe stałe debugowania, prawdopodobnie zobaczysz, gdzie występuje problem.

To nie wszystko

Composer oferuje znacznie więcej i gorąco polecam zapoznanie się z jego dokumentacją. Niektóre z nich omówię, patrząc na narzędzia, które planuję omówić w dalszej części tej serii, ale na razie polecam zapoznać się z niektórymi konwencjami.

Oh! I nie polecam sprawdzania katalogu dostawców w twoim repozytorium. Może to stać się później ogromnym katalogiem i może podważyć cały cel Composera.

W następnym poście opowiem dlaczego. Niektórzy to robią, i to jest w porządku, robiłem to już wcześniej, ale ważne jest, aby być rozsądnym, kiedy to robisz.

Err po stronie nie robienia tego. A dlaczego wyjaśnię w następnym poście.

Ź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