HelloWorldとechoしてもPHPと友達になれなかったから、フレームワークでやってみるMVC(5)FuelPHP
大意は初回書いたので長々とは書かないが、せっかくなのでControllerからViewへの連携や、ルーティングにも触れながらHelloWorldをやって、やや骨太のHelloWorldになってもらおうじゃないかということだ。(毎回
(単純にフレームワークに触れてみたいだけだったりするのは内緒)
FuelPHP
FuelPHPは大昔に他フレームワークの良いとこどり的な噂で触ってみたことがあった。系譜としては、CodeIgniterの軽量な特徴を受け継いだシンプルなフレームワークになっていて、自由度が高めな印象がある。現在はどのようになっているか。
プロジェクト作成
今回は「FuelPHP 1.8.2」を利用する。
# oilコマンドインストール
curl https://get.fuelphp.com/oil | sh
# プロジェクト作成(「supilog」の部分は、各自プロジェクト名に変更する)
oil create supilog
起動してみる
まだ何も修正を加えていないが、まずは一度起動してみる。起動にはoilコマンドが使えるようだ。
# プロジェクトフォルダに入ってから下記のコマンドを実行
oil server
welcomeページが表示された。画面内の「Get Started」の部分に、コントローラとビューの構成について、簡易的な表記があるので、初心者の方は助かるだろう。
プロジェクト内のoilファイル
最初composerでプロジェクト作成した後、プロジェクト内のoilファイルでoilコマンドが実行できるのかなと思っていた(Laravelにおけるartisanのような)が、動作しなかったので、oilコマンドをインストールする手順でやり直した。
という雑談。
fuel/app/classes/controller/hello.php
<?php
class Controller_Hello extends Controller
{
public function action_index()
{
$data['title'] = 'Hello World !! - FuelPHP';
$data['description'] = '昔から紫色がとても印象的';
return Response::forge(View::forge('hello/index', $data));
}
}
fuel/app/Views/hello.php
<!doctype html>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<div><?php echo $description; ?></div>
</body>
</html>
ブラウザ確認
この時点でhttp://localhost:8000/Helloにアクセスすると、画面が表示される。
/Helloのアクセスで、コントローラーhello.phpのController_Helloクラスが呼び出されているようだ。オートルート2つの名前が揃っていないとエラーになった。
アクセスURL : /Hello
コントローラー : hello.php
クラス名 : Controller_World
→エラー
アクセスURL : /Hello
コントローラー : world.php
クラス名 : Controller_Hello
→エラー
とはいえ、ルート(“/”)のアクセスで表示がしたいので、ルーティング設定を修正する。
fuel/app/config/routes.php
# デフォルト設定(コメント除く)
<?php
return array(
'_root_' => 'welcome/index',
'_404_' => 'welcome/404',
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
);
↓
# 修正
<?php
return array(
'_root_' => 'hello/index',
'_404_' => 'welcome/404',
'hello(/:name)?' => array('welcome/hello', 'name' => 'hello'),
);
確認してみる
無事に表示された。
さいごに
さすがに現在FuelPHPで新規開発する案件は、なかなか見つけられないかもしれませんが、過去のソースコードなどで遭遇することはあるかもしれません。2011年がバージョン1.0のリリースで、2013年前後あたりが激アツだったんでしょうかね。
本当にフレームワークの世界も移り変わりが激しいものです。
このHelloWorldも、いよいよ趣味の領域に入ってきましたが、YiiとかPhalconとかSlimとかもやってみる。