Przejdź do głównej zawartości
getnextpdf.com

Enterprise edycja

PHPStan

NextPDF Enterprise dostarcza niestandardową regułę PHPStan, EditionBoundaryRule, która oznacza importy use przekraczające granicę edycji Core → Pro → Enterprise. Jest to statyczna kontrola skierowana do programistów, która raportuje naruszenia; analizuje instrukcje importu i nie gwarantuje poprawności twojego kodu.

Ta funkcja jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną poziomu Enterprise. Jest to reguła PHPStan działająca w czasie kompilacji, rejestrowana przez konfigurację PHPStan, więc uruchamia się podczas analizy statycznej i nie ma ścieżki wykonywania w czasie działania; bramą licencji jest granica pakietu nextpdf/enterprise, bez osobnego kodu możliwości dla poszczególnych funkcji. Porównaj edycje i uzyskaj licencję.

Okno terminala
composer require nextpdf/enterprise:^3

Zarejestruj regułę w konfiguracji PHPStan:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

Reguła analizuje każdą instrukcję use i porównuje przestrzeń nazw importującą z prefiksem przestrzeni nazw importowanego symbolu. Egzekwuje jednokierunkową kolejność zależności:

  • Kod Core (NextPDF\, z wyłączeniem podprzestrzeni nazw Pro i Enterprise) nie może importować z NextPDF\Pro\* ani NextPDF\Enterprise\*.
  • Kod Pro (NextPDF\Pro\*) nie może importować z NextPDF\Enterprise\*.
  • Kod Enterprise (NextPDF\Enterprise\*) jest najwyższym poziomem i może importować z dowolnego z nich.

Gdy import przekracza granicę, reguła raportuje błąd z identyfikatorem nextpdf.editionBoundaryViolation oraz komunikatem nazywającym przestrzeń nazw importującą, zabroniony prefiks oraz czytelne dla człowieka etykiety edycji. Kontrola jest czysto statyczna: odczytuje graf importów w czasie analizy.

Reguła wnioskuje o instrukcjach use w czasie analizy, a nie w czasie wykonywania, ponieważ granica edycji jest inwariantem architektonicznym, a nie decyzją podejmowaną w czasie działania. Core, Pro i Enterprise są dostarczane jako osobne pakiety, więc niższy poziom nigdy nie może zależeć od symboli nieobecnych w mniejszej instalacji. Wychwycenie importu przekraczającego granicę podczas analizy statycznej doprowadza do niepowodzenia kompilacji, zanim błąd trafi do wdrożenia. Alternatywa jest gorsza: ten sam import ujawnia się później jako krytyczny błąd brakującej klasy we wdrożeniu wyłącznie na Core. Kolejność jest celowo jednokierunkowa, Core → Pro → Enterprise, odzwierciedlając sposób, w jaki pakiety open-core nawarstwiają się na sobie. Enterprise pozostaje nieograniczony, ponieważ jest najwyższym poziomem i może odwoływać się do każdej niższej edycji.

Tło projektowe: Open core, bez uzależnienia od dostawcy.

KlasaOdpowiedzialność
EditionBoundaryRuleReguła PHPStan nad instrukcjami use; raportuje naruszenia granicy edycji.

Reguła implementuje standardowy kontrakt Rule PHPStan nad typem węzła Use_ i emituje błędy pod identyfikatorem nextpdf.editionBoundaryViolation.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

Naruszenie pojawia się w wyniku PHPStan na przykład tak: import Enterprise wewnątrz kodu Core jest raportowany jako naruszenie granicy edycji w odpowiadającym mu wierszu use, pod identyfikatorem nextpdf.editionBoundaryViolation.

  • Reguła wnioskuje na podstawie przestrzeni nazw analizowanego pliku oraz prefiksu importowanego symbolu. Kod w przestrzeni nazw spoza NextPDF\ nie jest ograniczony tą regułą.
  • Przestrzenie nazw Enterprise są nieograniczone z założenia; reguła nigdy nie oznacza pliku Enterprise za import Pro lub Core.
  • Reguła analizuje instrukcje use. W pełni kwalifikowane odwołanie do klasy zapisane w treści bez use jest poza zakresem tej reguły; preferuj importy, aby granica była egzekwowana.
  • Kontrola jest statyczna i doradcza: raportuje naruszenia granicy. Nie dowodzi, że twój program jest poza tym poprawny.

Reguła działa na każdą instrukcję use podczas analizy PHPStan i wykonuje porównania prefiksów łańcuchów znaków. Jej narzut jest proporcjonalny do liczby instrukcji importu i jest pomijalny względem całkowitego czasu analizy.

Jest to reguła analizy statycznej. Wykonuje się w czasie kompilacji wewnątrz PHPStan, odczytuje wyłącznie strukturę kodu źródłowego i nie ma żadnego wpływu w czasie wykonywania na generowane pliki PDF.

Reguła przetwarza kod źródłowy w czasie analizy i nie obsługuje żadnych danych dokumentów ani danych osobowych.

Wynikiem reguły są diagnostyki PHPStan. Zawiera on przestrzenie nazw oraz nazwy symboli z twojego własnego kodu; traktuj logi analizy z taką samą starannością jak swój kod źródłowy.

Nie deklaruje się żadnej zgodności ze standardami. Jest to reguła narzędzi programistycznych egzekwująca wewnętrzne ograniczenie architektoniczne (warstwy edycji) w kompilacjach po stronie odbiorcy.

Nie dotyczy; reguła nie wykonuje żadnych operacji kryptograficznych i nie ma ścieżki wykonywania w czasie działania.

Nie jest to komponent czasu wykonywania. Celem reguły jest wychwycenie błędu architektonicznego — importu przekraczającego granicę edycji — zanim trafi do wdrożenia, przez doprowadzenie do niepowodzenia etapu analizy statycznej.

  • Reguła analizuje każdą instrukcję use i egzekwuje jednokierunkową kolejność zależności: Core nie może importować Pro ani Enterprise; Pro nie może importować Enterprise; Enterprise może importować dowolne.
  • Import przekraczający granicę jest raportowany pod identyfikatorem nextpdf.editionBoundaryViolation z przestrzenią nazw importującą oraz zabronionym prefiksem.
  • Kod w przestrzeni nazw spoza NextPDF\ nie jest ograniczony tą regułą.
  • W pełni kwalifikowane odwołanie do klasy w treści bez use jest poza zakresem tej reguły; preferuj importy, aby granica była egzekwowana.

Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.

NextPDF Core nie dostarcza reguły PHPStan dotyczącej granicy edycji. Odbiorca działający wyłącznie na Core, który chce egzekwować warstwy edycji we własnej kompilacji, musi sam napisać lub pozyskać równoważną regułę.

NextPDF Pro nie dostarcza reguły PHPStan dotyczącej granicy edycji; jest ona częścią wyłącznie pakietu nextpdf/enterprise. Wdrożenie wyłącznie na Pro nie ma komponentu Enterprise, z którego można by zarejestrować tę regułę. Zobacz przegląd Enterprise, aby poznać powierzchnię Enterprise.

Wewnętrzne szczegóły mechanizmu pozostają w wewnętrznej dokumentacji repozytorium źródłowego i są poza zakresem tego podręcznika.

Jest to reguła analizy statycznej działająca w czasie kompilacji. Wykonuje się wewnątrz PHPStan podczas analizy, odczytuje wyłącznie strukturę kodu źródłowego i nie ma żadnego wpływu w czasie wykonywania na generowane pliki PDF ani na żadną wdrożoną usługę. Jej rejestracja oraz wybór poziomu PHPStan należą do odpowiedzialności integratora.

Ta strona opisuje regułę analizy statycznej będącą narzędziem programistycznym. Nie daje żadnej gwarancji zgodności, certyfikacji ani poprawności twojego kodu; raportuje wyłącznie naruszenia granicy importu między edycjami i ma charakter doradczy. Nie stanowi porady prawnej. Ocena, czy twoja kompilacja spełnia twoje własne obowiązki architektoniczne lub umowne, należy do ciebie.