PHPで手帳のおまけを作るにあたり、まずは理屈抜きでプログラムを動かしてみて動く喜びを感じたかったのでゴリゴリの手組みで作っていましたが、PHP言語部分とHTML言語部分が混ぜこぜになると読めたもんじゃありませんでした。
かと言って echo
文をずっと並べるのもねぇ…HTML側のIDE補完が使えなくなるし…。
このモヤモヤ感、かつてMicrosoftのASP(ASP.NETじゃない、VBScript時代のやつ)を思い出しました(^^;ゞ
で、【テンプレートエンジン】というものを使うとPHP言語部分とHTML言語部分を分離しやすくなることが分かったので調べました。
2016年のPHPテンプレートエンジン勢力図
参考:
- 2015年版PHPのテンプレートエンジン調査
- 完全版! テンプレートエンジン チートシート (blade, twig, volt, smarty, mustache, の比較もあるよ)
- 昨今のPHPのテンプレートエンジンについて調べて共通インタフェースを作った
有名所としてはこの3つみたいです。
うーん
ただね…自分のようなPHP初心者にとってはどのサイトも高度すぎて何が書いてあるのか分からないんですよね…。
なんか覚えることが半端無く多そうだし…。
まず、インストールの時点でつまずくんですわ。
大抵、Composerとやらをインストールするところから始まるのですが、まずここから???状態。
んっ? Composerをインストールする一発目でいきなり出てくる curl
って何?
これのインストールはどうすんの? 標準で入ってるの? 制限多いレンタルサーバで使える?
で、設定(json)ファイルを「なんかスマートに」書き換えているね。
確かにsimpleでgeekな匂いがしていいけど、説明がスマートすぎて、なにをどう弄ればいいか分かんねえよ…。
とにかく学習コストが滅茶苦茶高そうで萎える。
ピンと来るものがないなぁ…
ま、上述の有名所ライブラリも突き詰めると「動きゃあ良いんだよ」の思想なのかもしれませんが、まだまだ敷居が高くて。
俺の欲しい機能は凄くシンプルで、
- ライブラリファイルをコピーして
require
するだけで動く手軽さ
レンタルサーバでもFTPアップロードするだけで済ませたい。SSHでどーのこーのは面倒くさい - MVCモデルとか難しいこと言わんでも良い
要するにPHPファイルはPHP言語で、HTMLファイルはHTML言語で分けて書きたいだけ。
HTMLの<title>とかをPHPから動的に変更できれば良い - HTMLへのデータの差し込みは直感的な書式であれば良い
ASPっぽければ尚OK
テンプレートの書式が凝っているとIDEの表示に不都合がありそう - 業務で使うわけじゃないので、とにかく実用の敷居と学習コストが低いものが欲しい
とりあえず動きゃあいいんだよ!
あった Σ(・ω・ノ)ノ!
すごくドンピシャな物があった。しかも誇らしいことに日本製である。
ちょっとお水な感じのデザインなので戸惑ったが、それはモノの本質とは関係ない。
シンプルを追求した設計思想が俺のニーズに完全ドンピシャです。
ライセンスも個人・商用問わずでありがたい。
Skinnyを使う上での注意事項
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は良いぞ~!
しばらく実用してみます。