HTML
HTML表現のために以下のテンプレートエンジンが利用可能です。
Twig vs Qiq
Twigは最初のリリースが2009年にされ多くのユーザーがいます。Qiqは2021年にリリースされた新しいテンプレートエンジンです。
Twigが暗黙的エスケープをデフォルトにし制御構造などをTwig独自構文にしています。それに対して、Qiqは明示的なエスケープを要求し、PHP構文が基本のテンプレートです。 Twigのコードベースは大きく機能も豊富ですがそれに対してQiqはコンパクトでシンプルです。 (冗長になりますがQiqを完全なPHP構文で記述するとIDEや静的解析フレンドリーになります。)
構文比較
PHP
<?= $var ?>
<?= htmlspecialchars($var, ENT_QUOTES|ENT_DISALLOWED, 'utf-8') ?>
<?= htmlspecialchars(helper($var, ENT_QUOTES|ENT_DISALLOWED, 'utf-8')) ?>
<?php foreach ($users => $user): ?>
* <?= $user->name; ?>
<?php endforeach; ?>
Twig
{{ var | raw }}
{{ var }}
{{ var | helper }}
{% for user in users %}
* {{ user.name }}
{% endfor %}
Qiq
{{% var }}
{{h $var }}
{{h helper($var) }}
{{ foreach($users => $user) }}
* {{h $user->name }}
{{ endforeach }}
{{ var }} // 表示されない
<?php /** @var Template $this */ ?>
<?= $this->h($var) ?>
レンダラー
RenderInetrface
にバインドされResourceObjectにインジェクトされるレンダラーがリソースの表現を生成します。リソース自身はその表現に関して無関心です。
リソース単位でインジェクトされるので、複数のテンプレートエンジンを同時に使うこともできます。
開発用のハローUI
開発時にハロー(Halo, 後光) 1 と呼ばれる開発用のUIをレンダリングされたリソースの周囲に表示することができます。ハローはリソースの状態、表現、及び適用されたインターセプターなどについての情報を提供します。また、該当するリソースクラスやリソーステンプレートがPHPStormで開かれるリンクも提供します。
- ハローホーム(ボーターとツール表示)
- リソース状態
- リソース表現
- プロファイル
- プロファイル
demoでハローのモックを試すことができます。
パフォーマンスモニタリング
ハローにはリソースのパフォーマンス情報も表示されます。リソースの実行時間、メモリ使用量、プロファイラへのリンクが表示されます。
インストール
プロファイリングにはxhprofのインストールが必要です。パフォーマンスのボトルネックを特定するのに役立ちます。
pecl install xhprof
// 加えてphp.iniファイルに'extension=xhprof.so'を追加
コールグラフを可視化してグラフィック表示するためには、graphvizのインストールが必要です。 例)コールグラフデモ
// macOS
brew install graphviz
// Windows
// graphvizのWebサイトからインストーラをダウンロードしてインストール
// Linux (Ubuntu)
sudo apt-get install graphviz
アプリケーションではアプリケーションのDevコンテキストモジュールなどを作成してHaloModule
をインストールします。
class DevModule extends AbstractModule
{
protected function configure(): void
{
$this->install(new HaloModule($this));
}
}