NaifyViewExtension\Dialect\Smarty\Migration\SmartyVariableInventory クラス

SmartyVariableInventory — テンプレート内の変数参照と代入を棚卸しする

どの変数が、どの書き方で使われているかを集計する。移行前の確認用で、テンプレートは書き換えない。

使用例

use NaifyView\NaifyView;
use NaifyViewExtension\NaifyViewExtension;
use NaifyViewExtension\Dialect\Smarty\Migration\SmartyVariableInventory;

NaifyView::boot();
NaifyViewExtension::boot();
$report = SmartyVariableInventory::scanPaths(__DIR__ . '/views', [
    'extensions' => ['tpl'],
]);
echo SmartyVariableInventory::formatTextReport($report);

メソッド

メソッド説明
public static scanPaths(array|string $paths, array $options = '...'): array 指定したディレクトリを走査し、調査結果をまとめる
標準ではtplとhtmlを対象にする。独自の区切り文字はoptionsで指定する。
public static formatTextReport(array $report): string 棚卸し結果を、ターミナルで読めるテキストに整える
private static scanTemplate(string $template, string $filePath, string $openDelimiter, string $closeDelimiter): array
private static scanTagBody(string $body, string $template, int $bodyOffset, string $filePath): array
private static addInventoryEntry(array $inventory, array $classificationCounts, array $entry, string $keyName, string $classificationName): void
private static classifyAssignmentTarget(string $target): string
private static classifyVariableAccess(string $expression): string
private static normalizeRoots(array|string $paths): array
private static normalizeDelimiters(array $delimiters): array
private static normalizeExtensions(array $extensions): array
private static iterateTemplateFiles(string $root, array $extensions): Generator
private static readFileContentsIfAvailable(string $path): ?string
private static readTagBody(string $template, int $offset, string $openDelimiter, string $closeDelimiter): array
private static consumeLiteralBlock(string $template, int $offset, string $openDelimiter, string $closeDelimiter): int
private static getTagName(string $body): string
private static trimSnippet(string $snippet): string
private static offsetToLine(string $source, int $offset): int
private static isEscaped(string $source, int $offset): bool
private static sortInventory(array $inventory): void