HTML

BEAR.Sundayでは、複数のテンプレートエンジンを活用してHTML表示を実現できます。

テンプレートエンジンの選択

対応テンプレートエンジン

  • Qiq(v1.0以降)
  • Twig(v1およびv2)

特徴比較

機能 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));
    }
}

例)コールグラフデモ

  1. 名前はSmalltalkのフレームワーク Seasideの同様の機能が由来しています。