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

Enterprise edycja

PHPStan — szczegółowa referencja

  • Jedna klasa publiczna: EditionBoundaryRule, niestandardowa reguła PHPStan działająca na instrukcjach use.
  • Egzekwuje jednokierunkową kolejność zależności edycji. Core nigdy nie importuje Pro ani Enterprise. Pro nigdy nie importuje Enterprise.
  • Naruszenia zgłaszają identyfikator nextpdf.editionBoundaryViolation w wierszu naruszającej instrukcji use.
  • Wyłącznie w czasie kompilacji. Reguła nie ma ścieżki wykonawczej ani wpływu na generowane pliki PDF.
  • Dostarczana w nextpdf/enterprise. Rejestracja korzysta ze standardowej konfiguracji PHPStan.

Ta funkcja jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną w warstwie Enterprise. To reguła statycznej analizy działająca w czasie kompilacji, bez ścieżki wykonawczej: bramkuje ją granica pakietu nextpdf/enterprise i nie niesie ona osobnego kodu możliwości dla poszczególnych funkcji. Core ani Pro nie dostarczają odpowiednika. Porównaj edycje i uzyskaj licencję.

Zainstaluj pakiet, a następnie zarejestruj regułę w konfiguracji PHPStan.

Okno terminala
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SymbolParametryZachowanie domyślneZwracaZgłasza lub kończy się błędemUwagi
EditionBoundaryRuleBrak (bez argumentów konstruktora)Bezstanowa reguła PHPStan subskrybująca instrukcje useNigdy nie zgłasza wyjątkufinal; implementuje PHPStan\Rules\Rule na Use_
EditionBoundaryRule::getNodeType()BrakDeklaruje typ węzła AST, który reguła subskrybujestring (Use_::class)Nigdy nie zgłasza wyjątkuStandardowa metoda kontraktu PHPStan Rule
EditionBoundaryRule::processNode()Node $node, Scope $scopeSprawdza każdy importowany symbol względem prefiksów zabronionych dla analizowanej przestrzeni nazwlist<IdentifierRuleError> (pusta, gdy zgodne)Nigdy nie zgłasza wyjątku; naruszenia pojawiają się jako błędy regułyIdentyfikator błędu nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule implementuje standardowy kontrakt PHPStan Rule na typie węzła Use_. Dla każdej instrukcji use porównuje przestrzeń nazw analizowanego pliku z prefiksem przestrzeni nazw każdego importowanego symbolu i egzekwuje jednokierunkową kolejność zależności.

Analizowana przestrzeń nazwEtykieta edycjiZabronione prefiksy importu
Podprzestrzenie nazw NextPDF\*, z wyłączeniem Pro i EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro i NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise i NextPDF\Enterprise\*EnterpriseBrak (najwyższa warstwa)
Dowolna przestrzeń nazw spoza NextPDF\Brak (bez ograniczeń)

Gdy import przekracza granicę, reguła zgłasza błąd pod identyfikatorem nextpdf.editionBoundaryViolation, zakotwiczony w wierszu naruszającej instrukcji use. Komunikat nazywa importowany symbol, importującą przestrzeń nazw, zabroniony prefiks oraz czytelne dla człowieka etykiety edycji. Każdy importowany symbol generuje najwyżej jeden błąd: dopasowywanie prefiksów zatrzymuje się na pierwszym pasującym zabronionym prefiksie.

Kontrola jest statyczna i ma charakter doradczy. Zgłasza naruszenia granicy na instrukcjach importu. Nie dowodzi, że analizowany program jest poza tym poprawny.

  • Przestrzenie nazw spoza NextPDF\ oraz pliki bez przestrzeni nazw nie generują błędów; reguła zwraca pustą listę.
  • Kod zadeklarowany w dokładnie głównej przestrzeni nazw NextPDF (bez segmentu podprzestrzeni nazw) nie jest ograniczony; wykrywanie granic dopasowuje podprzestrzenie nazw NextPDF\.
  • Pliki Enterprise nigdy nie są oznaczane za importowanie symboli Pro lub Core (najwyższa warstwa, z założenia).
  • Dopasowywanie prefiksów uwzględnia separator. Przestrzeń nazw taka jak NextPDF\Professional klasyfikuje się jako Core, nie Pro, a importy pod nią nigdy nie dają fałszywego trafienia względem prefiksu NextPDF\Pro\.
  • Import dosłownych nazw NextPDF\Pro lub NextPDF\Enterprise bez dalszego segmentu nie jest oznaczany; dopasowują się wyłącznie symbole pod tymi prefiksami.
  • Reguła nie filtruje według rodzaju importu: importy klas, function oraz const pod zabronionym prefiksem wszystkie są zgłaszane.
  • W pełni kwalifikowane odniesienia zapisane w treści bez instrukcji use są poza zakresem. Preferuj importy, aby granica była egzekwowana.
  • Grupowe deklaracje use są parsowane jako odrębny typ węzła GroupUse i wypadają poza subskrypcję Use_ reguły; zwykłe importy pojedynczych symboli utrzymują kontrolę granicy.
  • processNode() nigdy nie zgłasza wyjątku; wszystkie wyniki pojawiają się jako błędy reguły PHPStan lub pusty wynik.
  • Nie jest komponentem wykonawczym. Nie wykonuje operacji kryptograficznych, a tryb FIPS nie ma zastosowania.

Nie deklaruje się żadnej zgodności ze standardami. To reguła narzędzi deweloperskich egzekwująca wewnętrzne ograniczenie architektoniczne (warstwowanie edycji) w kompilacjach pochodnych. Implementuje kontrakt rozszerzenia reguł PHPStan, który jest API narzędzia zewnętrznego, a nie formalnym standardem. Reguła nie daje żadnej gwarancji zgodności, certyfikacji ani poprawności analizowanego kodu; zgłasza wyłącznie naruszenia importu na granicach edycji i ma charakter doradczy.

  • Reguła wykonuje się wewnątrz PHPStan podczas analizy, odczytuje wyłącznie strukturę źródła i nie ma wpływu na generowane pliki PDF ani na żadną wdrożoną usługę.
  • Zarejestrowanie reguły oraz wybór poziomu PHPStan pozostają w gestii integratora.
  • Klasa jest final i bezstanowa, więc jest bezpieczna w równoległych procesach analizy PHPStan.
  • Wynik analizy jest deterministyczny dla danego drzewa źródeł: te same dane wejściowe dają tę samą listę błędów.
  • Dostępna od nextpdf/enterprise 2.1.0; powyższy kontrakt odzwierciedla 3.1.0.

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