Enterprise エディション
PHPStan — 詳細リファレンス
- 公開クラスは 1 つ。
use文を対象とするカスタム PHPStan ルールEditionBoundaryRule。 - 一方向のエディション依存順序を強制します。Core が Pro または Enterprise をインポートすることはなく、Pro が Enterprise をインポートすることもありません。
- 違反は、問題のある
use行に対して識別子nextpdf.editionBoundaryViolationを報告します。 - ビルド時のみ。このルールはランタイムパスを持たず、生成される PDF に影響しません。
nextpdf/enterpriseに同梱されます。登録は標準の PHPStan 構成を使用します。
提供状況とライセンス
「提供状況とライセンス」という見出しのセクションこの機能は NextPDF Enterprise(nextpdf/enterprise)に同梱され、Enterprise ティアのライセンスエンベロープで有効化されます。これはランタイムパスを持たないビルド時の静的解析ルールです。nextpdf/enterprise パッケージの境界がこれをゲートしており、機能ごとの個別のケイパビリティコードは持ちません。Core と Pro は同等品を同梱していません。エディションを比較してライセンスを取得。
パブリック API サーフェス
「パブリック API サーフェス」という見出しのセクションパッケージをインストールし、PHPStan 構成にルールを登録します。
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| シンボル | パラメータ | 既定の挙動 | 戻り値 | スロー/失敗条件 | 備考 |
|---|---|---|---|---|---|
EditionBoundaryRule | なし(コンストラクタ引数なし) | use 文を購読するステートレスな PHPStan ルール | — | スローしない | final。Use_ に対して PHPStan\Rules\Rule を実装 |
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 は、Use_ ノードタイプに対して標準の PHPStan Rule コントラクトを実装します。各 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 文の行に固定してエラーを報告します。メッセージには、インポートされるシンボル、インポートする名前空間、禁止されたプレフィックス、および人間が読めるエディションラベルが記載されます。各インポートシンボルが生成するエラーは最大 1 件です。プレフィックス照合は、最初に一致した禁止プレフィックスで停止します。
このチェックは静的かつアドバイザリーです。インポート文上の境界違反を報告します。解析対象プログラムがそれ以外の点で正しいことを証明するものではありません。
エッジケースと失敗モード
「エッジケースと失敗モード」という見出しのセクションNextPDF\外の名前空間および名前空間を持たないファイルはエラーを生成しません。ルールは空のリストを返します。- ちょうどルート名前空間
NextPDF(サブ名前空間のセグメントを持たない)で宣言されたコードは制約されません。境界検出はNextPDF\サブ名前空間に一致します。 - Enterprise ファイルが Pro または Core のシンボルをインポートしたとしてフラグが立てられることは決してありません(設計上、最上位ティアのため)。
- プレフィックス照合はセパレータを認識します。
NextPDF\Professionalのような名前空間は Pro ではなく Core に分類され、その配下のインポートがNextPDF\Pro\プレフィックスに対して誤検出することはありません。 - リテラル名
NextPDF\ProまたはNextPDF\Enterpriseを、それ以上のセグメントなしでインポートしてもフラグは立ちません。それらのプレフィックス配下のシンボルのみが一致します。 - このルールはインポート種別でフィルタしません。クラス、
function、constのいずれのインポートも、禁止プレフィックス配下であれば報告されます。 use文を使わずに書かれた完全修飾のインライン参照は対象外です。境界が強制されるよう、インポートを推奨します。- グループ
use宣言は別個のGroupUseノードタイプとしてパースされ、ルールのUse_購読の対象外です。シンボルごとの通常のインポートは境界チェックが維持されます。 processNode()はスローしません。すべての結果は PHPStan のルールエラーまたは空の結果として表面化します。- ランタイムコンポーネントではありません。暗号操作は行わず、FIPS モードは適用されません。
標準への適合性は主張しません。これは、下流のビルドで内部のアーキテクチャ上の制約(エディションのレイヤリング)を強制する開発者ツールのルールです。第三者ツールの API である PHPStan ルール拡張コントラクトを実装するものであり、正式な標準ではありません。このルールは解析対象コードについてコンプライアンス、認証、正しさの保証を一切行いません。エディション境界のインポート違反を報告するのみであり、アドバイザリーです。
- このルールは解析中に PHPStan 内で実行され、ソース構造のみを読み取り、生成される PDF やデプロイ済みのサービスに影響しません。
- ルールの登録と PHPStan レベルの選択は、インテグレーターの責任のままです。
- クラスは
finalかつステートレスであるため、PHPStan の並列解析ワーカーの下でも安全です。 - 解析出力は、所与のソースツリーに対して決定的です。同じ入力は同じエラーリストを生成します。
nextpdf/enterprise2.1.0 以降で利用可能。上記のコントラクトは 3.1.0 を反映しています。
公開範囲の境界
「公開範囲の境界」という見出しのセクションこのページは、外部から観測可能な挙動とサポート対象のパブリック API サーフェスのみを記述しています。内部の名前空間パス、ヘルパークラス、メカニズムの表、ランブックのファイル名、チケットのプレフィックスは対象外です。