テンプレートエンジン、Blade(BladeOne)をLaravel以外で使うことが出来ました

Laravelなどのフレームワークを使うほどでも無いちょっとしたPHPのプロジェクトでも、テンプレートエンジンだけを使うと、viewがサクッと切り分けられて便利ですよね。

そんな場合、これまではSmartyを使うことが多かったのですが、フレームワーク利用時はLaravel+Bladeと……混在している感じでした。じゃ、SmartyをBladeを使えば使用感が統一できると思いトライです。

結論、Bladeのスタンドアロン版、BladeOneを使えば超簡単でした。

BladeOne

https://github.com/EFTEC/BladeOne

これですコレ。これを使えば、PHP単体でも、Laravel以外のフレームワークでもBladeを使えます。
ただドキュメントを読んでみると、Laravel側で開発されているBladeとは違い、Laravelに追従してアンオフィシャルに開発されている別系統のプロジェクトっぽいので、いつかは本家Bladeとの差異などが生まれてきそうな予感もしなくはなくはない……

インストールです

Composerでのインストールが楽ですよね。

composer require eftec/bladeone

composer以外でも、アーカイブをダウンロードしてきたり、git cloneで行ってね。とドキュメントには書かれていました。

使い方

<?php

require __DIR__.'/vendor/autoload.php';

Use eftec\bladeone\BladeOne;

$views = __DIR__.'/views'; // テンプレートのパス
$cache = __DIR__.'/cache'; // キャッシュのパス
$blade = new BladeOne($views,$cache,BladeOne::MODE_AUTO);

$hogehoge = "ほげほげ";
$fugafuga = "<strong>タグもかけるよ</strong>";

echo $blade->run("sample", compact('hogehoge','fugafuga'));

こんな感じですね。フォルダ構成はお好みで。

viewファイル

./view/sample.blade.php

中身は

<!DOCTYPE html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
<h1>テストです</h1>
{{$hogehoge}}<br />
<h2>エスケープすると</h2>
{!!$fugafuga!!}<br />
</body>
</html>

こんな感じ。

これでLaravelとテンプレートの使用感が統一できますね!