NextPDF — uruchamianie i wykrywanie w CodeIgniter
W skrócie
Dział zatytułowany „W skrócie”CodeIgniter 4 wykrywa klasę Services pakietu, jego funkcje pomocnicze i rejestrator za pośrednictwem mechanizmu wykrywania pakietów Composer. Ta strona wyjaśnia tę sekwencję oraz konfigurację, która nią steruje.
Jak działa wykrywanie usług w CodeIgniter
Dział zatytułowany „Jak działa wykrywanie usług w CodeIgniter”CodeIgniter 4 rozwiązuje usługę, przeszukując wszystkie wykryte klasy Config\Services pod kątem metody statycznej odpowiadającej żądanej nazwie usługi. Gdy aplikacja wywołuje service('pdf'), framework znajduje pierwszą wykrytą klasę Services, która deklaruje metodę pdf, i ją wywołuje.
Wykrywaniem steruje Config\Modules:
$enabled— główny przełącznik automatycznego wykrywania. Domyślnietrue.$discoverInComposer— rozszerza wykrywanie na pakiety Composer. Domyślnietrue. Ta flaga pozwala frameworkowi znaleźćnextpdf/codeigniter.$composerPackages— opcjonalny filtronly/excludedla zestawu pakietów Composer.$aliases— typy elementów uczestniczących w wykrywaniu. Domyślnie framework uwzględniaservicesorazregistrars, a ten pakiet korzysta z obu.
Klasa pakietu to NextPDF\CodeIgniter\Config\Services. Composer mapuje prefiks PHP Standards Recommendation 4 (PSR-4) NextPDF\CodeIgniter\ na src/CodeIgniter/. W pełni kwalifikowana nazwa klasy musi zawierać przestrzeń nazw najwyższego poziomu (PSR-4 §x1.x2.p5, modalność MUST). Prefiks przestrzeni nazw jest mapowany na katalog bazowy, więc klasa jest rozwiązywana do właściwego pliku (PSR-4 §x1.x3).
Sekwencja uruchamiania
Dział zatytułowany „Sekwencja uruchamiania”- Automatyczne ładowanie Composer. Composer rejestruje mapę PSR-4 oraz wpisy automatycznego ładowania
files. Na tym etapie ładuje plik pomocniczysrc/CodeIgniter/Helpers/pdf_helper.php. - Inicjalizacja frameworka. CodeIgniter odczytuje
Config\Modules. Gdy wykrywanie jest włączone, buduje listę wykrytych elementów obejmującą pakiety Composer. - Wykrywanie rejestratora. Framework zbiera klasy
Registrar. MetodaRegistrar::Autoload()pakietu udostępnia funkcję pomocnicząpdfloaderowi funkcji pomocniczych CodeIgnitera. - Rozwiązywanie usługi przy pierwszym wywołaniu. Fabryki usług są leniwe. Pierwsze wywołanie
service('pdf')lubServices::pdf()uruchamia fabrykę. Współdzielone usługi są buforowane przez lokalizator na czas trwania procesu.
Powiązania kontenera
Dział zatytułowany „Powiązania kontenera”CodeIgniter 4 nie udostępnia kontenera PSR-11. Zamiast tego rolę powiązań pełnią statyczne metody fabryczne klasy Services. Każda metoda przyjmuje parametr bool $getShared:
| Usługa | Domyślnie współdzielona | Uwagi |
|---|---|---|
fontRegistry | tak | Rozgrzewana, a następnie blokowana. |
imageRegistry | tak | Bufor ograniczony metodą najdawniej używanych (LRU). |
documentFactory | tak | Bezstanowa. |
pdfDocument | nie | Nowa przy każdym wywołaniu. |
pdf | nie | Nowa przy każdym wywołaniu. |
tsaClient | tak | null, gdy nie skonfigurowano adresu URL urzędu znaczników czasu (TSA). |
pdfSigner | nie | null, gdy podpisywanie jest wyłączone. |
Współdzielone instancje trafiają do bufora instancji BaseService CodeIgnitera na czas trwania procesu. Środowisko testowe frameworka czyści ten bufor za pomocą BaseService::reset(), a testy funkcjonalne pakietu korzystają z tego resetowania między przypadkami.
Kolejność rozwiązywania konfiguracji
Dział zatytułowany „Kolejność rozwiązywania konfiguracji”Konfiguracja wynikowa jest ustalana w następującej kolejności:
- Wartości domyślne pakietu w
NextPDF\CodeIgniter\Config\NextPdf. - Klasa aplikacji
Config\NextPdf, która rozszerza klasę pakietu, jeśli istnieje. CodeIgniter ładuje ją zamiast wartości domyślnej pakietu. - Nadpisania środowiskowe stosowane przez
BaseConfig, z kluczami opartymi na krótkiej nazwie klasy pisanej małymi literaminextpdf(klucze zagnieżdżone z kropkami lub w pełni kwalifikowana forma klasy).
Plik rozszerzający konfigurację aplikacji deklaruje jedną klasę i nie ma żadnych efektów ubocznych. Zachowuje więc zgodność z oczekiwaniem PSR-1: plik albo deklaruje symbole, albo wykonuje logikę z efektami ubocznymi, ale nie jedno i drugie (PSR-1 §x1.x1.p3). Plik pomocniczy jest celowym odpowiednikiem z efektami ubocznymi. Deklaruje globalne funkcje pdf() i pdf_document(), a każda z nich jest zabezpieczona sprawdzeniem function_exists, więc podwójne załadowanie jest bezpieczne.
Diagnostyka
Dział zatytułowany „Diagnostyka”composer dump-autoload— odbudowuje mapę PSR-4 oraz listę automatycznego ładowaniafilespo aktualizacji.- Aby szybko zweryfikować wykrywanie, użyj kontrolera, który wywołuje
Services::pdfDocument(false)i sprawdza, czy zwracany jest obiektDocument. - Sprawdź
vendor/composer/autoload_files.php, aby potwierdzić, że plik pomocniczy jest zarejestrowany. - Zobacz /integrations/codeigniter/troubleshooting/, aby sprawdzić mapowanie awarii na przyczyny.
Zgodność
Dział zatytułowany „Zgodność”- W pełni kwalifikowana nazwa klasy wymaga przestrzeni nazw najwyższego poziomu (PSR-4 Autoloader §x1.x2.p5).
- Mapowanie prefiksu przestrzeni nazw na ścieżkę klasy w katalogu bazowym (PSR-4 Autoloader §x1.x3).
- Plik deklaruje symbole albo powoduje efekty uboczne — projekt pliku pomocniczego (PSR-1 Basic Coding Standard §x1.x1.p3).
Zobacz także
Dział zatytułowany „Zobacz także”- /integrations/codeigniter/integration/ — dokumentacja integracji oraz test dymny.
- /integrations/codeigniter/install/ — instalacja i weryfikacja wykrywania.
- /integrations/codeigniter/overview/ — pełny zakres interfejsu programowania aplikacji (API).
- /integrations/codeigniter/troubleshooting/ — tryby awarii wykrywania.