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 не поставляют эквивалента. Сравнить редакции и получить лицензию.
Публичная поверхность API
Заголовок раздела «Публичная поверхность API»Установите пакет, затем зарегистрируйте правило в конфигурации PHPStan.
composer require nextpdf/enterprise:^3rules: - 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 и Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro и NextPDF\Pro\* | Pro | NextPDF\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/enterprise2.1.0; контракт выше отражает 3.1.0.
Граница публикации
Заголовок раздела «Граница публикации»Эта страница описывает только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов руководств по эксплуатации и префиксы тикетов находятся вне области действия.