Naify\App\Profiler\HtmlRenderer クラス
プロファイラ HTML レンダラー — デバッグバー出力
チェックポイント記録をページ末尾にデバッグバーとして出力する。 shutdown 時に自動挿入され、閉じるボタンで非表示にできる。 通常は Profiler 側から間接的に使い、アプリ側から直接呼ぶのは 「明示的に HTML を埋め込みたい場面」に限られる。
使用例
$profiler = Naify::profiler();
$profiler->enable();
$profiler->checkpoint('boot:end');
echo HtmlRenderer::renderProfiler($profiler);
設計意図
バッジデータの保持は Profiler、描画の責務は HtmlRenderer に置く。
バッジより複雑な描画(パネル追加等)が将来必要になっても、
描画責務は HtmlRenderer 側に閉じる。
メソッド
| メソッド | 説明 |
|---|---|
public
static
renderProfiler(Profiler $profiler): string
|
Profiler 全体を tree 付きデバッグバーとして描画する |
public
static
render(string $name, array $checkpoints, array $badges = '...'): string
|
チェックポイント記録を HTML デバッグバーとしてレンダリングする |
private
static
buildEnvBadges(): string
|
OPcache / JIT の状態バッジを生成する |
private
static
buildCustomBadges(array $badges): string
|
アプリから追加されたカスタムバッジを生成する
バッジデータの保持は Profiler、描画の責務は HtmlRenderer に置く。
バッジより複雑な描画(パネル追加等)が将来必要になっても、
描画責務は HtmlRenderer 側に閉じる。
|
private
static
buildProfilerDomId(string $name): string
|
profiler root / copy target 用の DOM id を組み立てる |
private
static
buildProfilerClientPayload(string $name, array $checkpoints, array $badges, array $messages, array $tree, string $totalTime, float $totalTimeMs, string $peakMemory, int $peakMemoryBytes, string $phpVer, string $mode): array
|
client-side renderer 用 payload を組み立てる |
private
static
buildAgentSummary(string $name, string $mode, array $checkpoints, array $badges, array $messages, array $tree, float $totalTimeMs, int $peakMemoryBytes): array
|
AI / tool 向けの要約面を組み立てる |
private
static
collectSlowSections(array $nodes): array
|
tree から section の timing 要点を抽出する |
private
static
appendSlowSections(array $nodes, array $sections): void
|
集計先を共有して section を1回ずつ追加する |
private
static
truncateInline(string $text, int $limit): string
|
長文を 1 行 preview 用に短くする |
private
static
encodeProfilerPayload(array $payload): string
|
payload を compact JSON へ変換する |
private
static
buildCopyButton(string $copyText, string $extraClass = , ?string $targetId, string $label = Copy): string
|
copy ボタンを組み立てる |
private
static
buildHiddenCopyTarget(string $targetId, string $text): string
|
copy ボタン用の hidden text target を組み立てる |
private
static
buildInteractionScript(string $id, string $payloadId, string $bodyId): string
|
copy / tree toggle 用の JS を返す |
private
static
formatBytes(int $bytes): string
|
バイト数を人間が読みやすい形式に変換する |