Enterprise редакция
PHPStan
Краткий обзор
Заголовок раздела «Краткий обзор»NextPDF Enterprise поставляет пользовательское правило PHPStan EditionBoundaryRule, которое выявляет импорты use, пересекающие границу редакций Core → Pro → Enterprise. Это статическая проверка для разработчиков, которая сообщает о нарушениях; она анализирует операторы импорта и не гарантирует корректности вашего кода.
Доступность и лицензирование
Заголовок раздела «Доступность и лицензирование»Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и активируется с лицензионным конвертом уровня Enterprise. Это правило PHPStan, работающее на этапе сборки и регистрируемое через вашу конфигурацию PHPStan, поэтому оно выполняется во время статического анализа и не имеет пути выполнения во время работы; лицензионный гейт — это граница пакета nextpdf/enterprise, без отдельного кода возможности для каждой функции. Сравните редакции и получите лицензию.
Установка
Заголовок раздела «Установка»composer require nextpdf/enterprise:^3Зарегистрируйте правило в своей конфигурации PHPStan:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleКонцептуальный обзор
Заголовок раздела «Концептуальный обзор»Правило проверяет каждый оператор use и сравнивает импортирующее пространство имён с префиксом пространства имён импортируемого символа. Оно обеспечивает однонаправленный порядок зависимостей:
- Код Core (
NextPDF\, исключая подпространства имён Pro и Enterprise) не должен импортировать изNextPDF\Pro\*илиNextPDF\Enterprise\*. - Код Pro (
NextPDF\Pro\*) не должен импортировать изNextPDF\Enterprise\*. - Код Enterprise (
NextPDF\Enterprise\*) — это верхний уровень и может импортировать из любого из них.
Когда импорт пересекает границу, правило сообщает об ошибке с идентификатором nextpdf.editionBoundaryViolation и сообщением, в котором названы импортирующее пространство имён, запрещённый префикс и удобочитаемые метки редакций. Проверка чисто статическая: она читает граф импортов на этапе анализа.
Почему это работает именно так
Заголовок раздела «Почему это работает именно так»Правило рассуждает об операторах use на этапе анализа, а не во время выполнения, потому что граница редакций — это архитектурный инвариант, а не решение времени выполнения. Core, Pro и Enterprise поставляются как отдельные пакеты, поэтому нижний уровень никогда не должен зависеть от символов, отсутствующих в меньшей установке. Обнаружение импорта, пересекающего границу, во время статического анализа заставляет сборку завершиться неудачно ещё до того, как ошибка попадёт в выпуск. Альтернатива хуже: тот же импорт позднее проявляется как фатальная ошибка отсутствующего класса в развёртывании только с Core. Порядок намеренно однонаправленный, Core → Pro → Enterprise, отражая то, как пакеты open-core наслаиваются друг на друга. Enterprise остаётся неограниченным, потому что это верхний уровень и он может ссылаться на любую нижестоящую редакцию.
Предыстория проектирования: Открытое ядро, без привязки к поставщику.
Поверхность API
Заголовок раздела «Поверхность API»| Класс | Назначение |
|---|---|
EditionBoundaryRule | Правило PHPStan над операторами use; сообщает о нарушениях границы редакций. |
Правило реализует стандартный контракт PHPStan Rule над типом узла Use_ и выдаёт ошибки под идентификатором nextpdf.editionBoundaryViolation.
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distПример кода — рабочая среда
Заголовок раздела «Пример кода — рабочая среда»# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcНарушение появляется в выводе PHPStan, например так: импорт Enterprise внутри кода Core сообщается как нарушение границы редакций на нарушающей строке use под идентификатором nextpdf.editionBoundaryViolation.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Правило рассуждает о пространстве имён анализируемого файла и префиксе импортируемого символа. Код в пространстве имён, отличном от
NextPDF\, этим правилом не ограничивается. - Пространства имён Enterprise по замыслу не ограничены; правило никогда не помечает файл Enterprise за импорт из Pro или Core.
- Правило анализирует операторы
use. Полностью квалифицированная ссылка на класс, написанная встроенно безuse, находится вне области охвата этого правила; предпочитайте импорты, чтобы граница принуждалась. - Проверка статическая и рекомендательная: она сообщает о нарушениях границы. Она не доказывает, что ваша программа в остальном корректна.
Производительность
Заголовок раздела «Производительность»Правило выполняется для каждого оператора use во время анализа PHPStan и выполняет сравнения строковых префиксов. Его накладные расходы пропорциональны числу операторов импорта и пренебрежимо малы относительно общего времени анализа.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Это правило статического анализа. Оно выполняется на этапе сборки внутри PHPStan, читает только структуру исходного кода и не влияет во время выполнения на формируемые PDF.
Размещение данных и меры по защите ПДн
Заголовок раздела «Размещение данных и меры по защите ПДн»Правило обрабатывает исходный код на этапе анализа и не работает ни с какими данными документов или персональными данными.
Безопасная телеметрия и очистка журналов
Заголовок раздела «Безопасная телеметрия и очистка журналов»Вывод правила — это диагностика PHPStan. Он содержит пространства имён и имена символов из вашего собственного кода; относитесь к журналам анализа с той же осторожностью, что и к исходному коду.
Соответствие
Заголовок раздела «Соответствие»Соответствия каким-либо стандартам не заявляется. Это правило инструментария для разработчиков, которое обеспечивает внутреннее архитектурное ограничение (расслоение по редакциям) в нижестоящих сборках.
Поведение в режиме FIPS
Заголовок раздела «Поведение в режиме FIPS»Неприменимо; правило не выполняет криптографических операций и не имеет пути выполнения во время работы.
Модель угроз
Заголовок раздела «Модель угроз»Это не компонент времени выполнения. Цель правила — выявить архитектурную ошибку — импорт, пересекающий границу редакций, — до выпуска, заставив этап статического анализа завершиться неудачно.
Контракт поведения
Заголовок раздела «Контракт поведения»- Правило проверяет каждый оператор
useи обеспечивает однонаправленный порядок зависимостей: Core не должен импортировать Pro или Enterprise; Pro не должен импортировать Enterprise; Enterprise может импортировать любого. - Импорт, пересекающий границу, сообщается под идентификатором
nextpdf.editionBoundaryViolationс импортирующим пространством имён и запрещённым префиксом. - Код в пространстве имён, отличном от
NextPDF\, этим правилом не ограничивается. - Полностью квалифицированная встроенная ссылка на класс без
useнаходится вне области охвата этого правила; предпочитайте импорты, чтобы граница принуждалась.
Граница публикации
Заголовок раздела «Граница публикации»Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы заявок находятся вне области охвата.
Резервный режим Core
Заголовок раздела «Резервный режим Core»NextPDF Core не поставляет правило PHPStan для границы редакций. Потребителю только с Core, желающему обеспечить расслоение по редакциям в своей сборке, придётся написать или взять эквивалентное правило самостоятельно.
Резервный режим Pro
Заголовок раздела «Резервный режим Pro»NextPDF Pro не поставляет правило PHPStan для границы редакций; оно является частью только пакета nextpdf/enterprise. Развёртывание только с Pro не имеет компонента Enterprise, из которого можно было бы зарегистрировать это правило. См. Обзор Enterprise для поверхности Enterprise.
Замечание о границе Enterprise
Заголовок раздела «Замечание о границе Enterprise»Внутренние детали механизма остаются во внутренней документации исходного репозитория и находятся вне области охвата этого руководства.
Граница развёртывания
Заголовок раздела «Граница развёртывания»Это правило статического анализа на этапе сборки. Оно выполняется внутри PHPStan во время анализа, читает только структуру исходного кода и не влияет во время выполнения на формируемые PDF или на любую развёрнутую службу. Его регистрация и выбор уровня PHPStan — обязанность интегратора.
Граница правового соответствия
Заголовок раздела «Граница правового соответствия»Эта страница описывает правило статического анализа из инструментария для разработчиков. Оно не даёт гарантий соответствия, сертификации или корректности вашего кода; оно сообщает только о нарушениях границы импорта между редакциями и является рекомендательным. Оно не является юридической консультацией. Оценить, отвечает ли ваша сборка вашим архитектурным или договорным обязательствам, — ваша обязанность.