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とテンプレートの使用感が統一できますね!