HTML
BEAR.Sundayでは、複数のテンプレートエンジンを活用してHTML表示を実現できます。
テンプレートエンジンの選択
対応テンプレートエンジン
特徴比較
機能 | Qiq | Twig |
---|---|---|
エスケープ方式 | 明示的 | 暗黙的 |
構文 | PHP準拠 | 独自構文 |
コードベース | 軽量 | 豊富な機能 |
IDE対応 | 優れている | 一般的 |
構文比較
PHP:
<?= $var ?>
<?= htmlspecialchars($var, ENT_QUOTES|ENT_DISALLOWED, 'utf-8') ?>
<?= htmlspecialchars(helper($var, ENT_QUOTES|ENT_DISALLOWED, 'utf-8')) ?>
<?php foreach ($users as $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 }} // 表示されない
Or
<?php /** @var Template $this */ ?>
<?= $this->h($var) ?>
レンダラー
RenderInterface
にバインドされ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));
}
}
例)コールグラフデモ