PHPのおすすめテンプレートエンジンは?選び方や自作方法についてご紹介
- システム
エンジニア - PHPテンプレ―トエンジンの選び方や自作方法について教えてください。
- プロジェクト
マネージャー - 分かりました。それでは、おすすめのPHPテンプレ―トエンジンや選ぶ時の注意点などについてご紹介します。
PHPのおすすめテンプレ―トエンジンとその選び方
PHPテンプレ―トエンジンは、コーダーにプログラミングの知識がなくても使用出来、引き出したデータを渡すと、簡単な記述に変換してHTMLに表示してくれる便利なツールです。またコードとデザインを分けることが可能なので、複数人で作業する場合には分担も出来ます。
今回は、PHPのおすすめテンプレ―トエンジンとその選び方、テンプレ―トエンジンを自分で作成する方法について紹介していきます。
PHPテンプレートエンジンとは?
PHPテンプレートエンジンは、PHPのプログラムファイルと表示ファイルを分けて開発出来るので、コーディングする際にPHPプログラムをプログラミングする人とHTML、CSSのコーディングする人が違うのであれば、テンプレ―トエンジンを使用するのがおすすめです。
HTMLと親和性の高いスクリプト言語だと言われているPHP言語は、HTMLにPHPを書くことでプログラミング初心者でも簡単にプログラミング出来ます。ただ、HTMLにPHPを書くやり方は小規模開発で限界を迎えてしまう為、中規模・大規模なシステムを製作するには不向きな書き方です。
もしこのやり方で中規模・大規模なシステムを制作してしまうと、プログラムファイルの可読性が低下したり、表示内容と処理内容が混在してプログラムそのものが煩雑になります。PHPテンプレートエンジンを使えばこのような現象を防止し、綺麗にデータを表示出来ます。
またPHPテンプレートエンジンは、処理内容(PHP)と表示内容(HTMLとCSS)を分けて管理出来る、PC・スマホサイトで両方同じもの制作する際に、テンプレートを共通化することで無駄を減らし、使い回しが利くというメリットもあります。
PHPのテンプレートエンジンを選ぶ方法
PHPテンプレ―トエンジンは数多くの種類がありますが、選ぶ時の注意する点として重要なのは、開発環境に対応していることと、開発が止まっていないかということです。
中には開発環境が限定されてしまうものや、開発が停止し不具合が対応されないものもあるので気を付けて選ぶようにしましょう。
Blade(ブレイド)
最初に紹介するのは、Laravel標準搭載のテンプレートエンジンであるBlade(ブレイド)です。
{{ $x }}で変数が表示され、@if~@endif などで分岐、ループが出来、拡張子は「.blade.php」です。Laravelを使っているならBlade(ブレイド)はとても楽なのでおすすめです。
またテンプレートの中に<?php ~?>構文を書けば、もとのPHPを呼び出せるのでかなり柔軟です。クラス変数とarrayがはっきりと分かれていて、PHPと同じように記述し「.」で書くことが出来ます。
継承やincludeなども完備されていて、PackagistにはBlade単体で使えるライブラリもあるのです。https://packagist.org/packages/duncan3dc/blade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<html>
<head>
<title>App Name - @NAMIE('title')</title>
</head>
<body>
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@NAMIE('content')
</div>
</body>
</html>
|
Dwoo(ドゥー)
次におすすめのテンプレ―トエンジンはDwoo(ドゥー)です。これはHTMLで{ }を書き、PHPの変数をそのまま出力します。
1
2
3
4
5
6
|
<p>The date is {$date}</p>
<div class="article">
<h1 class="title">{$article.title}</h1>
<p class="content">{$article.content}</p>
<p class="title">Posted by : {$article.author}</p>
</div>
|
Smarty
数多くの開発者が使用していて、歴史がある高機能テンプレ―トエンジンSmarty(スマーティー)は、日本語のものが多いという特徴があります。
高機能でソースは大型かつマニュアルも長大ですが様々な技術と文献が集積されている為、参考文献がたくさんあり答えられる人も多いので、使いやすいテンプレ―トエンジンの1つです。
{ } で閉じたところが変換されます。
1
2
3
4
5
6
7
8
|
{foreach $foo as $bar}
<a href="{$bar.zig}">{$bar.zag}</a>
<a href="{$bar.zig2}">{$bar.zag2}</a>
<a href="{$bar.zig3}">{$bar.zag3}</a>
{foreachelse}
There were no rows found.
{/foreach}
|
Twig(ツィグ)
活発な開発が続くテンプレ―トエンジンTwig(ツイグ)は、{{ ~ }}で変数の出力をし{% ~ %}で判定、メソッドを書きます。
多数の「フィルタ」という処理が組み込まれていて、Twigのみでもかなりの変形処理をすることが可能で、HTMLエスケープをPHPで処理しなくても{{ var | escape }}と書けば済むのでとても便利です。
PHPを大きく包んでいる為、Twig(ツィグ)だけでも十分処理が出来、表記が見やすく綺麗というメリットもあります。
ただ、オリジナルメソッドや定義されていないメソッドなどを使用したい場合には、エンジンへ事前登録をしなければならず、状況によってはコード側が煩雑になることもあるので、定義されていないメソッドを多く使うなら、先ほど紹介したBlade(ブレイド)がおすすめです。
1
2
3
4
5
6
7
8
9
10
|
{{ var }}
{{ var|escape }}
{{ var|e }} {# shortcut to escape a variable #}
{% for user in users %}
* {{ user.name }}
{% else %}
No user have been found.
{% endfor %}
|
Div PHP Template Engine(ディブ)
Div PHP Template Engineはディブと呼ばれており、1ファイルで完結することが出来るテンプレートエンジンです。機能は判定、ループ、出力などに絞られますが、軽いテンプレート処理をするなら十分で、継承やincludeなどはなく、Smarty(スマーティー)よりも構文がシンプルです。
小回りが利くので、WordPressのプラグインの中や、小さいPHPスクリプトの出力で使用出来ます。
1
2
3
4
5
6
7
|
echo new div("index.tpl", array(
"products" => array(
array("name" => "Banana", "price" => 5.3),
array("name" => "Sweet potato", "price" => 6.1),
array("name" => "Pumpkin", "price" => 4.3)
)
));
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<h1><a href = "http://divengine.com" style="text-decoration:none;">[[]] Div, PHP Template Engine</a></h1>
<h2>Products ({$products})</h2>
?$products
<table border = "1">
<tr><th>#</th><th>Name</th><th>Price</th></tr>
[$products]
<tr ?$_is_odd style = "background:#eeeeee;" $_is_odd?>
<td>{$_order}</td>
<td>{$name}</td>
<td align="right">${#price:2.#}</td>
</tr>
[/$products]
</table>
@else@
<h2>Products don't exist</h2>
$products?
|
PHPテンプレートエンジンの自作方法
PHPでHTMLのテンプレートエンジンを自作する場合には、既存のテンプレートエンジンを使用せずPHPのみを使用して開発するという方法で作成することが可能です。ここでは、プログラムファイルと表示ファイルを分ける方法を紹介します。
最初に表示するHTMLテンプレートのtest.htmlを作成します。
<h2>この記事は、_+temp+_です。</h2>
このHTMLで書いた【_+temp+_】が、次に作成する時に使う関数の中で置き換わります。
次にテンプレート機能のfunc.phpを作成します。
1
2
3
4
5
6
7
8
9
10
11
12
|
<php
function func_temp($html_file, $disp_data) {
$html_data = file_get_contents($html_file);
$replaced = '/_+(.*)+_/';
$html_data = preg_replace($replaced, $disp_data, $html_data);
return $html_data;
}
?>
|
1行目で作ったHTMLのテンプレートファイルを読み込み、HTMLテンプレートの【_+】【_+】で閉じられた部分を置き換え、最後の行で表示する内容を返すというコードになっています。
次に、ブラウザなどから呼び出す為のPHPファイル、browser.phpを準備します。
1
2
3
4
5
6
7
8
|
<php
require 'func.php';
$data = 'PHPテンプレートエンジンを自分で作る方法';
echo func_temp('temp.html', $data);
?>
|
1行目でテンプレート機能ファイルを読み込み、2行目で画面に表示させるデータを登録し、3行目でテンプレート機能関数を呼ぶという仕組みです。これで準備が完了しました。
結果を確認する為に、PHPファイルにアクセスします。
今記述したコードのタイトルは、PHPテンプレートエンジンを自分で作る方法となり
tesp.htmlに書いた【_+temp+_】の部分が、browser.phpに書いた【PHPテンプレートエンジンを自分で作る方法】に置き換わり、プログラムファイルと表示ファイルを分けることが出来ました。
- システム
エンジニア - 既存のテンプレ―トエンジンを使わずに自作する場合の呼び出し方もよく分かりました。
- プロジェクト
マネージャー - PHPテンプレ―トエンジンについてはご紹介した方法を参考にしてください。
最後に
今回はおすすめのPHPテンプレ―トエンジンと自作する方法について紹介しました。
テンプレ―トエンジンには、それぞれに様々な特徴があるので、ぜひ自分に合うツールを使ってプログラミングをしてみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)