バニラPHPにBladeを導入して良かったこと

バニラPHPにBladeを導入して良かったこと

Laravelnのテンプレートエンジンとして採用されているBladeをバニラPHPのプロジェクトに採用して良かったところをまとめました。

インストール

Bladeには、BladeOneというスタンドアロン版があるので、今回はそちらのインストール方法を紹介します。

Without composer’s autoload.php

1.https://github.com/EFTEC/BladeOne/archive/master.zipをDLし解凍します。

2. includeして実行します

include "lib/BladeOne.php"; // 解凍したBladeOneのパス
Use eftec\bladeone;

$views = __DIR__ . '/views'; // viewフォルダ
$cache = __DIR__ . '/cache'; // キャッシュフォルダ 
$blade = new bladeone\BladeOne($views,$cache,BladeOne::MODE_AUTO);
echo $blade->run("hello",array("variable1"=>"value1")); // /views/hello.blade.php must exist

With composer’s autoload.php

1. composerへ登録

$ composer require eftec/bladeone

2. autoloadで呼び出し

require "vendor/autoload.php";

Use eftec\bladeone\BladeOne;

$views = __DIR__ . '/views';
$cache = __DIR__ . '/cache';
$blade = new BladeOne($views,$cache,BladeOne::MODE_AUTO);
echo $blade->run("hello",array("variable1"=>"value1"));

基本構文

変数の出力

{{$variable}}エスケープ処理あり
{!!$variable!!}エスケープ処理なし

テンプレートの継承

@extends(‘layouts.master’)テンプレートの継承
@section(‘sidebar’) / @endsection
セクション
@yield(‘title’)
セクションの埋め込み

制御文

@if (boolean)
if
@elseif (boolean)
elseif
@elseelse
@endifendif
@for ($i = 0; $i < 10; $i++) / @endfor
for文
@foreach($array as $alias) / @foreach
foreach文
@while($condition) / @endwhilewhile文

PHPの埋め込み

PHPベースなので<?php ?>を普通に動きます。

@php
  echo $foo;
@endphp

<?php
  echo $foo;
?>

Bladeの良いところ

バニラのPHPと使用感が変わらない

基本、PHPの構文が簡略化されたものが用意されていて使用感はバニラのPHPとほとんど変わりません。むしろ簡略化されている分、少ない文字数で記述できます。

テンプレートエンジンとしてのPHPの足りない機能を補ってくてる

バニラのPHPにはないテンプレートの継承やセクションの埋込みなどができるようになっていています。継承や埋込みなどができるようになると同じサイトで複数のデザインを管理しやすくなったり、ソースがきれいになって保守がしやすくなります。

継承とか使いだしたら普通のHTMLなんか書きたくなくなってきます

学習コストが少ない

先程も書きましたが、バニラのPHPとの使用感の違いは程感じられません。制御文もPHPのままです。

Bladeの記法が分からなくても、最悪、困ったら普通にPHPのコードを書いてしまえば解決できるので、学習コストが少なくて済みます。

人気フレームワークに採用されている

人気フレームワーク(Laravel)に採用されているので、困ってもググればすぐに答えが見つります。この点も学習コストを大幅に下げる要因だと思います。

基本構文が分かれば調べる必要は…

Bladeの使っての感想

Bladeを使うと…PHPはもともとテンプレートエンジンだったんだなぁとふつふつと実感できます。

BladeはPHPの基本は変えずにPHPのテンプレートエンジンとしての足りていない部分を補ってくれている感がスゴイです。

最悪、困ったら普通にPHPを書いてしまえば解決できるところもMarkdownに似ていて好きです。

スタンドアロン版があって導入も簡単なので、一度試してみてください。