PHPの便利な小技 PHPで使える便利な小技などのご紹介

Smartyを使った小規模WEBアプリケーション用フレームワークを考える

2018年8月23日

ここ数年はCakePHPやSymfonyといったフレームワークを使って(或いは指定され)WEBアプリケーション制作を行う案件が多く、そう言えばネイティブコードで書くことが極端に少なくなったなぁと思いまして、昔よく使っていたSmartyで簡単なフレームワークを書いてみようかと思います。3~4日で書き終わる小さな案件でCake等のフレームワークを使うのは重たすぎる感が有りますので。

https://studio-key.com/Sample2/Smarty/basic/page1.html

とりあえず基本中の基本だけなのでファイルはこれだけです。www2はさくらサーバーのパス名と被ってしまったので。

 

構築概念

Smartyやその他の設定ファイルなど、可能ならばサーバーのWEB公開ディレクトリより上に置きたいところですが、クライアントさんが既に契約済みのサーバーですと権限がないこともしばしば。aliasの変更など出来れば良いのですが、既にホームページファイルが置いて有り叶わぬケースも。そこでmod_rewriteを使ってWEB用のディレクトリを設定するという方法を取ることにします。

各ページ名はcontroller.phpに定義されたControllerクラスのメソッド名と同じとすることで、プログラムの何処で処理されているのか判りやすくします。多くのフレームワークで使わているものですね。また、Smartyテンプレートもページ名と同じ名称で作成します。上図のpage1.tplがそれにあたります。

 

.htaccessに関して

設置ルート

WEB公開ルート

サーバーによってはRewriteBaseを書かないとダメな場合も有りますが、基本的にはこんな感じで。www2にマップさせ、あとはmod rewriteでURLをフレンドリーにします。

 

core.php

Smartyの読み込みやサニタイズなど、基本的なプログラムの集合体としています。

全文では有りませんが、こんな感じです。ちなみにこの下の方に都道府県配列などをずら~と書いています。必要に応じてここにデータベース接続やPDFやCSV書き出し、画像アップロード等のプログラムを追加していく感じですね。

 

controller.php

ブラウザ要求に対してページ表示を制御します。

コンストラクタでは表示しているURLを分解し、メソッドやテンプレート名を定義しています。

https://xxx.xx/Smarty/page/action/array[0]/array[1]/array[2]…

このようなURLの場合は、pageというメソッドとpage.tplというテンプレートを作成するということになります。残りは配列としてメソッドに渡します。

https://studio-key.com/Sample2/Smarty/basic/param/hoge1/hoge2/hoge3/hoge4

これが実際の例です。

テンプレート

あとはメソッドの存在を確認し、無ければ404.tplを表示します。

 

あとがき

データベースを使わないようなものでも、変数を少し使いたいってことは有るかと思います。もちろんjavascriptで対応可能なケースも多いでしょうけど好みかなと。また、URLに自由度が有るので、小さなホームページなんかにも良いと思います。例えば一定期間だけ使うキャンペーン用ページとかですね。一枚ものなら利用しているCMSにページ追加なり静的HTMLなりで良いでしょうけど、キャンペーンページ専用のヘッダー・フッターや簡単な申し込みフォームを絡めるなど、少しだけ凝っている場合にこういったものが有効かと思います。

年齢ゆえか集中力が以前より長続きせず、学習時間をあまり取れなくなって便利なものに頼りがちになっています。もちろん業務効率向上には必要ですし安定感も有ります。ただ、便利だからとマニュアル通りに書いていると、思わぬところでしっぺ返しを食らう気がします。何でもかんでも楽しようと考えず、ネイティブなコードで書くことも必要だなと改めて実感しました。

Smartyは便利なものの類じゃ?という部分はまぁ・・・ツッコミ無しで。

 
  • このエントリーをはてなブックマークに追加
  • LINEで送る

PAGE TOP