PHPテンプレートエンジンとSkinnyの調査結果

PHP

PHPで手帳のおまけを作るにあたり、まずは理屈抜きでプログラムを動かしてみて動く喜びを感じたかったのでゴリゴリの手組みで作っていましたが、PHP言語部分とHTML言語部分が混ぜこぜになると読めたもんじゃありませんでした。

かと言って echo 文をずっと並べるのもねぇ…HTML側のIDE補完が使えなくなるし…。
このモヤモヤ感、かつてMicrosoftのASP(ASP.NETじゃない、VBScript時代のやつ)を思い出しました(^^;ゞ

で、【テンプレートエンジン】というものを使うとPHP言語部分とHTML言語部分を分離しやすくなることが分かったので調べました。

スポンサーリンク

2016年のPHPテンプレートエンジン勢力図

参考:

有名所としてはこの3つみたいです。

  1. Smarty
    PHP Template Engine | Smarty
    Smarty is a template engine for PHP.
  2. Twig
    Home - Twig - The flexible, fast, and secure PHP template engine
    Twig - The flexible, fast, and secure template engine for PHP
  3. Blade
    Laravel - The PHP Framework For Web Artisans
    Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small...

うーん

ただね…自分のようなPHP初心者にとってはどのサイトも高度すぎて何が書いてあるのか分からないんですよね…。
なんか覚えることが半端無く多そうだし…。

まず、インストールの時点でつまずくんですわ。
大抵、Composerとやらをインストールするところから始まるのですが、まずここから???状態。

んっ? Composerをインストールする一発目でいきなり出てくる curl って何?
これのインストールはどうすんの? 標準で入ってるの? 制限多いレンタルサーバで使える?

で、設定(json)ファイルを「なんかスマートに」書き換えているね。
確かにsimpleでgeekな匂いがしていいけど、説明がスマートすぎて、なにをどう弄ればいいか分かんねえよ…。

とにかく学習コストが滅茶苦茶高そうで萎える。

ピンと来るものがないなぁ…

ま、上述の有名所ライブラリも突き詰めると「動きゃあ良いんだよ」の思想なのかもしれませんが、まだまだ敷居が高くて。
俺の欲しい機能は凄くシンプルで、

  1. ライブラリファイルをコピーしてrequireするだけで動く手軽さ
    レンタルサーバでもFTPアップロードするだけで済ませたい。SSHでどーのこーのは面倒くさい
  2. MVCモデルとか難しいこと言わんでも良い
    要するにPHPファイルはPHP言語で、HTMLファイルはHTML言語で分けて書きたいだけ。
    HTMLの<title>とかをPHPから動的に変更できれば良い
  3. HTMLへのデータの差し込みは直感的な書式であれば良い
    ASPっぽければ尚OK
    テンプレートの書式が凝っているとIDEの表示に不都合がありそう
  4. 業務で使うわけじゃないので、とにかく実用の敷居と学習コストが低いものが欲しい

とりあえず動きゃあいいんだよ!

あった Σ(・ω・ノ)ノ!

すごくドンピシャな物があった。しかも誇らしいことに日本製である。

Skinny - 日本発のPHPテンプレートエンジン
Skinnyは「シンプルであること」をコンセプトとしたPHPの高速テンプレートエンジンです。最小限の学習コストですぐにPHP開発に組み込みが可能です。

ちょっとお水な感じのデザインなので戸惑ったが、それはモノの本質とは関係ない。

シンプルを追求した設計思想が俺のニーズに完全ドンピシャです。
ライセンスも個人・商用問わずでありがたい。

Skinnyを使う上での注意事項

以下、 ver 0.3.3 の話です

1.PHP7では修正が必要

PHP7では言語仕様の変更の関係で修正が必要でした。

尚、Skinnyのソースは全く見ておらず(見るスキルがない)、全てはエラーメッセージに沿って機械的に修正しただけなので、使い込むと何か問題が発生するかもしれませんのでご了承ください。

【ini_set(mbstring.~】 が非推奨なので外す

119行目付近

// 不要ならこの部分は消しても構わない
ini_set( 'mbstring.internal_encoding', $skConf['ENCODE']['INTERNAL'] );
ini_set( 'short_open_tag'      , 0 );
ini_set( 'magic_quotes_gpc'    , 'off' );
ini_set( 'mbstring.http_input' , 'pass');
ini_set( 'mbstring.http_output', 'pass');

とありますが、消しても構わんらしいし、mbstring.~ はPHP7では使えないようなのでコメントアウトします。

// 不要ならこの部分は消しても構わない
//ini_set( 'mbstring.internal_encoding', $skConf['ENCODE']['INTERNAL'] );
ini_set( 'short_open_tag' , 0 );
ini_set( 'magic_quotes_gpc' , 'off' );
//ini_set( 'mbstring.http_input' , 'pass');
//ini_set( 'mbstring.http_output', 'pass');

コンストラクタの表現を直す

178行目

 function Skinny() {
     ClearStatCache();

 function __construct() {
     ClearStatCache();

にします。

2.external タグのマニュアルに誤りがある

マニュアルには

external( 'template-filename' )

とありますが、実際には第二引数に boolean 値をセットしないと動きません。

external( 'template-filename', false )

第二引数の仕様は分かりません(^^ゞ

Skinnyはイイぞ~

検索しても公式サイトくらいしか情報がないってのと、マニュアルが間違ったままってあたりにユーザの少なさが垣間見えるけど、Skinnyは良いぞ~!

しばらく実用してみます。

関連記事

Web開発に関する記事まとめ
ブログ内から、Web開発に関連する記事をピックアップしています。
スポンサーリンク
スポンサーリンク
PHP

お役に立てたらシェアお願いします(^O^)/

『コピー』=タイトルとURLをコピー(アプリ貼付用)

他の記事を探す

カテゴリーで探す

キーワードで探す

文字で検索する

有限工房
タイトルとURLをコピーしました