
ココロ踊るフレームワーク FuelPHP 導入してみます
実は、久しぶりに新しいこと勉強してて、ちょっと感動しています。 wp-eアボガト ぼうしです。
FuelPHP
とても使い勝手のいいPHPフレームワーク、FuelPHPをただいま絶賛勉強中です。
先日、サーバーの更新で新しい環境にCentOSをインストールして、既存のwebサービスを移して運用しようとしたのですが、PHP4で書かれた多くの部分(中にはPHP3)が、warningやらFatalやらが出てきて、該当部分を書き直す事になりました。更新したマシンのPHPがすでに5.3だったためなんですが、いまさら5.2とか入れたりしません。推奨非推奨の確認もそうですが、そもそもダメな部分もあったりして、ほぼ作り直しな部分もありました。
今後も使っていただけるのであれば、統一されたフレームワークで作りなおしてみても面白いかも?
探していたら、ありました。FuelPHP。なんかもう僕的には、JavaScript使っていて、初めてjQueryに触れた時のような感じがデジャヴのように蘇ってリフレインしてフラッシュバックしています。
FuelPHP に至る道程
CakePHPは、参考書籍も多く成果物の品質も安定しますので王道です。またSQLを書かなくても機能を実装できたりする賢い子なのです。
でも、正規化が好物で、SQLをモキュモキュして開発してきた自分には、残念に作用してCRUDのメリットに浴することなく今に至っています。ユーザーロールの設定が難しくそこら辺でもちょっと遠ざかってもいます。
Symfonyとかも検討したいのですが、使っているお友達もあまり近くにいなくて、、、フレームワーク使って早く幸せになりたいと願いながら、願うがゆえに不幸な毎日を過ごしていました。
PHPを使った開発案件では、やっぱりCakePHPは王道で、正しい気がするのですが、個人的になんか楽しくないのです。WordPressのソース見ててちょっとニヤっとしたりするレベルの自由人で自分はいたいのかもしれません。(居たいのか痛いのか)
そんな悶々とした日々の中、『はじめてのフレームワークとしてのFuelPHP 改訂版』
β版レビュアーを募集されていて応募したのがきっかけで触れるチャンスが巡ってきました。導入してとてもうまく行きそうな感じです。SQLもモリモリ書いても許してくれそうな感じです。
あとで知ったことですが、FuelPHPに関してこの本とても良いらしく、第2版のレビューアーになったと話したら知人にずいぶん羨ましがられたりしました。
『はじめてのフレームワークとしてのFuelPHP 改訂版』 おすすめです。
FuelPHPのインストール
では早速インストールしてみましょう。入れてみて実感しないと良いも悪いもわかりませんよね。
FuelPHPには高速インストーラーがあります。MacのHomebrewみたいな感じですが、あちらはRubyこちらはShellスクリプトですね。
$ curl get.fuelphp.com/oil | sh
これで、oilというコマンド名のShellスクリプトがインストールされました!
FuelPHPをインストールするフォルダに移動(もしくは作成)してoilコマンドうちます。
$ cd
$ mkdir Sites
$ cd Sites
$ oil create fuelphp
しばらく待つとインストールが完了します。
oilコマンド がうまく動かない場合にはサイトからダウンロードしてきてもOKです。
インストールしたフォルダにApacheがアクセスできるようにシンボリックリンクを設定します。
$ cd /path to docroot/
$ ln -s ~/Sites/fuelphp/public fuelphp
FuelPHPには沢山のファイルが有るのですが、ユーザーから見えるフォルダは、public
フォルダだけでいいようです。逆にほかのフォルダは見れないように設置をしたほうがセキュリティ的な安全性が上がるようです。
動作確認。
ブラウザで、https://localhost/fuelphp/ にアクセスして、Welcomeの画面が見えれば成功です。
はじめての FuelPHP
インストールすると、大量のフォルダが出来てきますが、自分で書いたファイルを置くフォルダはそんなに多くありません。
1. 直書きが直接表示される、publicフォルダ
2. ファイル操作や引数処理をするコントローラファイルを置く、fuel/app/classes/controller フォルダ
3. HTMLタグなど見た目の処理をするビューフアイルを置く、fuel/app/views フォルダ
4. データベースアクセスなどモデルファイルを置く、fuel/app/classes/model フォルダ
普段のコーディングだとこれくらいです。
動作例1 単一ファイルでそのまま表示
簡単なページの表示であれば、publicフォルダに直接書くだけで動作します。
public/show_file.php
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Hello World</title> </head> <body> <?php echo "Hello Word!"; ?> </body> </html>
動作例2 コントローラクラスのみで動作
MVCを使った表示が当然できるのですが、それも、最低コントローラのみで表示できます。
conrollerのみでページを表示 fuel/app/classes/controller/hello1.php
<?php class Controller_Hello1 extends Controller { public function action_index() { //文字列を返す return 'Hello World'; } }
動作例3 モデルなしでも動作
コントローラとビューだけ使った表示
fuel/app/classes/controller/hello2.php
<?php class Controller_Hello2 extends Controller { public function action_index() { //viewオブジェクトを返す return View::forge('hello'); } }
fuel/app/views/hello.php
<!doctype html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>Hello World!</title> </head> <body> <p>Hello World!</p> <p><?php echo 1+1; ?></p> </body> </html>
という至極自由な表現ができてしまうのがFuelPHPの素敵なところです。
個人的にとても素敵な、Restコントローラ
配列にデータを用意するだけで、出力をJSON、XMLやCSVに整形して出力してくれるもの。{とか数えながらecho文の中に書いてた私にとってはまさに感動的
fuel/app/classes/controller/weather.php
<?php class Controller_weather extends Controller_Rest { public function get_today() { //クエリ文字列から地名を代入 $location = Input::get('loc'); //本来はモデルから地名の今日の天気を検索して代入 $weather = 'fine'; //レスポンスを返す $this->response(array( 'location' => $location, 'weather' => $weather, )); } }
んで、結果がこちら。
https://localhost/fuelphp/weather/today.json?loc=nagoya
{"location":"nagoya","weather":"fine"}
https://localhost/fuelphp/weather/today.xml?loc=nagoya
<?xml version="1.0" encoding="utf-8"?> <xml><location>nagoya</location><weather>fine</weather></xml>
localhost/fuelphp/weather/today.csv?loc=nagoya
"location","weather" "nagoya","fine"
スマホアプリのバックエンドサーバーとか、即効でできちゃいます。もう文字のコロンとかセミコロンとか中カッコとかダブルクオーテーションとかチェックしないでいい感じになります。どうです?熱いでしょ?
まだ始めたところなので、ここでまとめ。
おおよそwebサービスで自分がしたいことが自分の表現イメージ通り出来そうかな〜という、明るい未来を感じさせてくれるPHPフレームワーク。それが私のFuelPHPに対する今の印象です。機会があれば勉強会とかに参加して、使っている方の事例など聞いてみたいと思います。
FuelPHPには意外な副産物もあります。
それは・・・
PHP5.3以降を対象にして作成されていますので、うかつにPHP4なコーディングしても動いてしまうという危険性がバッサリ切り捨てられるのも魅力です。気持も新たにお勉強し直し出来てスッキリしそうです。
文献
最後に文中のソースコードはすべて、『はじめてのフレームワークとしてのFuelPHP 第2版』 の書籍の中から引用させていただきました。この本いいと思います。電子版が先行していましたが、書籍版が今は手元に置くことが出来ます。FuelPHP始めるんだったら手元において使うとココロ踊るウェブ開発ができると思います。
written by: ぼうし
おととしくらいまで、このままのほほんと人生を過ごせるかと嫁ともくろんでいましたが、どうもそうは行かない経験をしました。もうちょっと勉強できて、もうちょっと人様のお役に立てて、もうちょっと娘に好かれる自分を手に入れられたらなと考えています。
>>出力をJSON、XMLやCSVに整形して出力
XMLやCSVは若干面倒ですが、JSONなら配列を用意してecho json_encode($array)で一発では?(ご存知でしたらすみません。意外と知らない方がいるので…)
https://www.php.net/manual/ja/function.json-encode.php
フレームワークならヘッダ出力とかも面倒みてくれそうなので、使えるならフレームワークのほうが良いですね。
はい、意外と知らない方の一人でした。コメント有難うございます。嬉しいです。