blocs/blocs: Laravel 非依存モード(Blocs\View)
blocs/blocs: Laravel 非依存モード(Blocs\View)
define('BLOCS_NO_LARAVEL', true) を設定すると、Laravel なしで BLOCS テンプレートをコンパイル・表示できます。スタンドアロン PHP、単体テスト、静的 HTML 生成などに使います。
前提条件: blocs/blocs パッケージがインストール済みであること。No.2.1 の上級者向け補足も参照してください。
基本的な使い方
require_once 'vendor/blocs/blocs/src/View.php';
// コンストラクタにテンプレートファイルのパスを渡す
$view = new Blocs\View('/path/to/template.blocs.html');
// 変数を渡して HTML 文字列を取得
$html = $view->generate(['name' => '太郎']);
// または直接出力して終了
$view->output(['name' => '太郎']);
主なメソッド
| メソッド | 説明 |
|---|---|
generate($val, $withFixer = false) |
変数 $val を展開して HTML 文字列を返す |
output($val, $withFixer = false) |
generate() した HTML を echo して exit |
getPath() |
テンプレートの実ファイルパスを返す |
$withFixer = true にすると、HTML ドキュメントのコメント除去・空行整理などの整形が行われます(textarea / pre 内は除外)。
キャッシュディレクトリ
Laravel 非依存モードでは View.php 読み込み時に BLOCS_NO_LARAVEL が自動定義され、BLOCS_CACHE_DIR は書き込み可能な一時ディレクトリ(/tmp 等)が自動選択されます。失敗すると B001 が発生します。
手動で指定する場合:
define('BLOCS_NO_LARAVEL', true);
define('BLOCS_CACHE_DIR', '/path/to/cache/');
define('BLOCS_ROOT_DIR', '/path/to/templates/');
require_once 'vendor/blocs/blocs/src/View.php';
制限事項
Blocs\ValidateのApp\Rules\*自動解決は Laravel 環境向けです(BLOCS_NO_LARAVEL時はスキップされます)lang()ヘルパー・route()等の Laravel 連携機能は利用できませんdata-includeで他テンプレートを読み込む場合、BLOCS_ROOT_DIRを適切に設定してください
コンパイルの仕組み
初回 generate() 時に BlocsCompiler がテンプレートを PHP にコンパイルし、BLOCS_CACHE_DIR/{md5}.php と同名の .json メタデータを生成します。include 先の更新時刻を見て再コンパイルするか判定します(Laravel 版と同様)。