こんばんは、Webプログラマの篠田です。
過ごしやすい時期が過ぎてしまい、PCと同じで暑さに弱い私にとっては辛い季節になっていきます。
さて、今回は初級PHPプログラマから中級PHPプログラマにクラスチェンジするために必要となるだろう「PHPテンプレートエンジン」についてお話したいと思います。
具体的なテンプレートエンジンの使い方のご紹介は次回以降にちょこちょこ出していきたいと思います。
PHPテンプレートエンジンとは
PHPの本を買って読むと「PHPはHTMLと親和性の高いスクリプト言語です」という謳い文句をよく目にします。
確かに下記のようなHTMLの中にPHPを書き加えることができます。
1 2 3 4 5 6 7 8 9 10 |
<!DOCTYPE html> <html lang="ja"> <head> <title>分かりやすいPHP初歩の書き方</title> <meta charset="utf-8"> </head> <body> こんにちは、<?php echo "三石 琴乃"; ?>さん。 </body> </html> |
これはHTMLを知っている初級者であればすごく分かりやすい書き方だと思います。
ただし、この書き方ができるのは小規模な開発までが限界です。
この書き方で、中・大規模なシステムを作ると『確実』に保守・メンテナンスでプログラマがダークサイドに落ちてしまう確率が急上昇することでしょう。
問題はプログラムファイルの可読性が非常に低下するという点と、表示内容(View)と処理内容(Controller)が混在してプログラム自体が煩雑になリやすい点です。
そこで役に立つのが「テンプレートエンジン」と呼ばれる仕組みです。
「テンプレートエンジン」を利用することで、処理内容(これはだいたPHPの塊になります)と表示内容(これはHTML+CSSの塊)を分けて管理することができるようになります。
「分けることで管理するファイルが増えるのはちょっと。。。」と思われるかもしれませんが、PCサイトとスマホサイトを別々の見せ方をしたい時などは、「処理内容」が同じで「表示内容」が違うだけということがよくあります。
そういった時に同じような「処理内容」を書かなくていい(使い回しがきく)という利点もあります。
また、同じような「表示内容」もテンプレートの共通化をすることで無駄を減らすことができるようになります。
※設計をしっかり作らないと、無駄なテンプレートが大量発生してしまい後で悲しい気分になりますのでご注意下さい。
どんなものがあるの?
PHPで使われるテンプレートエンジンはたくさんありますが、その中でも有名どころを2つご紹介しておきましょう。
Smarty
PHP4(確か?)なんていう今から考えるとはるか昔のバージョンあたりから使われるように(当時それぐらいしかPHPテンプレートエンジンがなかった)なった現役のテンプレートエンジンです。
現在稼働している多くのシステムでも使われており情報も多いですが、バージョンを重ねるごとに廃れた書式なども多く、書かれている内容を素直に使うと「騙された!!」と叫ぶ頻度が比較的多くなるので、Google先生に質問するときは使っているバージョンをしっかり明記するようにしましょう。
twig
PHPのフレームワークである「symfony」の標準テンプレートエンジンです。
「symphony」以外でも使うことができるテンプレートエンジンで最近ではECサイト構築用プラットフォーム「EC-CUBE」の標準テンプレートエンジンとしても使われています。
※「EC-CUBE」は以前「Smarty」で構築していましたが「EC-CUBE3」からtwigを採用したようです。
その他にもフレームワークに依存したものや、国産のものなどいろいろとありますが、開発環境やプロジェクトにあった道具を使うと良いかと思います。
テンプレートエンジンの勉強方法
これは私も始めた頃に大変困った問題でした。
というのもPHPの本はいくらでもAmazonで売っているのですが、テンプレートエンジンに特化した本というのは、「Smarty」で3冊程度、「twig」に至っては専門書が0(2016.06.10時点)。
「Smarty」の本も最新で2014年と古いです。
なので、本で勉強するというのはほぼ諦めてもらい、Google先生に教えを請うのが正解ではありますが、バージョンによる書式の違いというのもありますので、記事の更新日には注意して下さい。
まとめ
テンプレートエンジンに興味が湧いてきましたか?
次回の私の回では「twig30分クッキング」と題しまして使い方をご紹介していきたいと思います。(予定)