Перейти к содержимому
getnextpdf.com

Enterprise редакция

PHPStan — глубокий справочник

  • Один публичный класс: EditionBoundaryRule, кастомное правило PHPStan над инструкциями use.
  • Навязывает однонаправленный порядок зависимостей редакций. Core никогда не импортирует Pro или Enterprise. Pro никогда не импортирует Enterprise.
  • Нарушения сообщаются под идентификатором nextpdf.editionBoundaryViolation на нарушающей строке use.
  • Только на этапе сборки. У правила нет runtime-пути и нет влияния на генерируемые PDF.
  • Поставляется в nextpdf/enterprise. Регистрация использует стандартную конфигурацию PHPStan.

Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Это правило статического анализа времени сборки без runtime-пути: его закрывает граница пакета nextpdf/enterprise, и оно не несёт отдельного кода возможности на каждую функцию. Core и Pro не поставляют эквивалента. Сравнить редакции и получить лицензию.

Установите пакет, затем зарегистрируйте правило в конфигурации PHPStan.

Окно терминала
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
СимволПараметрыПоведение по умолчаниюВозвращаетБросает или завершается сПримечания
EditionBoundaryRuleНет (без аргументов конструктора)Правило PHPStan без состояния, подписанное на инструкции useНикогда не бросаетfinal; реализует PHPStan\Rules\Rule над Use_
EditionBoundaryRule::getNodeType()НетОбъявляет тип узла AST, на который подписано правилоstring (Use_::class)Никогда не бросаетСтандартный метод контракта PHPStan Rule
EditionBoundaryRule::processNode()Node $node, Scope $scopeПроверяет каждый импортируемый символ против префиксов, запрещённых для анализируемого пространства имёнlist<IdentifierRuleError> (пустой при соответствии)Никогда не бросает; нарушения проявляются как ошибки правилаИдентификатор ошибки nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule реализует стандартный контракт PHPStan Rule над типом узла Use_. Для каждой инструкции use оно сравнивает пространство имён анализируемого файла с префиксом пространства имён каждого импортируемого символа и навязывает однонаправленный порядок зависимостей.

Анализируемое пространство имёнМетка редакцииЗапрещённые префиксы импорта
Подпространства имён NextPDF\*, исключая Pro и EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\Pro и NextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\Enterprise и NextPDF\Enterprise\*EnterpriseНет (верхний уровень)
Любое пространство имён вне NextPDF\Нет (без ограничений)

Когда импорт пересекает границу, правило сообщает об ошибке под идентификатором nextpdf.editionBoundaryViolation, привязанной к строке нарушающей инструкции use. Сообщение называет импортируемый символ, импортирующее пространство имён, запрещённый префикс и понятные человеку метки редакций. Каждый импортируемый символ производит не более одной ошибки: сопоставление префиксов останавливается на первом совпавшем запрещённом префиксе.

Проверка статическая и рекомендательная. Она сообщает о нарушениях границы в инструкциях импорта. Она не доказывает, что анализируемая программа в остальном корректна.

  • Пространства имён вне NextPDF\ и файлы без пространства имён не производят ошибок; правило возвращает пустой список.
  • Код, объявленный в точном корневом пространстве имён NextPDF (без сегмента подпространства имён), не ограничивается; обнаружение границы сопоставляет подпространства имён NextPDF\.
  • Файлы Enterprise никогда не помечаются за импорт символов Pro или Core (верхний уровень, по замыслу).
  • Сопоставление префиксов учитывает разделитель. Пространство имён вроде NextPDF\Professional классифицируется как Core, а не Pro, и импорты под ним никогда не дают ложных срабатываний против префикса NextPDF\Pro\.
  • Импорт буквальных имён NextPDF\Pro или NextPDF\Enterprise без дальнейшего сегмента не помечается; совпадают только символы под этими префиксами.
  • Правило не фильтрует по виду импорта: импорты класса, function и const под запрещённым префиксом сообщаются все.
  • Встроенные полностью квалифицированные ссылки, написанные без инструкции use, находятся вне области действия. Предпочитайте импорты, чтобы граница навязывалась.
  • Групповые объявления use разбираются как отдельный тип узла GroupUse и выпадают из подписки правила на Use_; обычные посимвольные импорты сохраняют проверку границы.
  • processNode() никогда не бросает; все исходы проявляются как ошибки правила PHPStan или как пустой результат.
  • Не runtime-компонент. Он не выполняет криптографических операций, и режим FIPS неприменим.

Заявлений о соответствии стандартам нет. Это правило инструментария разработчика, навязывающее внутреннее архитектурное ограничение (слоистость редакций) в нижестоящих сборках. Оно реализует контракт расширения правил PHPStan, который является API стороннего инструмента, а не формальным стандартом. Правило не даёт гарантий соответствия, сертификации или корректности в отношении анализируемого кода; оно сообщает только о нарушениях границы импорта между редакциями и носит рекомендательный характер.

  • Правило выполняется внутри PHPStan во время анализа, читает только структуру исходного кода и не влияет на генерируемые PDF или какую-либо развёрнутую службу.
  • Регистрация правила и выбор уровня PHPStan остаются ответственностью интегратора.
  • Класс final и без состояния, поэтому он безопасен при параллельных рабочих процессах анализа PHPStan.
  • Вывод анализа детерминирован для данного дерева исходного кода: одинаковые входные данные дают одинаковый список ошибок.
  • Доступно начиная с nextpdf/enterprise 2.1.0; контракт выше отражает 3.1.0.

Эта страница описывает только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов руководств по эксплуатации и префиксы тикетов находятся вне области действия.