環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

HelloWorldとechoしてもPHPと友達になれなかったから、フレームワークでやってみるMVC(5)FuelPHP

大意は初回書いたので長々とは書かないが、せっかくなのでControllerからViewへの連携や、ルーティングにも触れながらHelloWorldをやって、やや骨太のHelloWorldになってもらおうじゃないかということだ。(毎回

(単純にフレームワークに触れてみたいだけだったりするのは内緒)

FuelPHP

FuelPHPは大昔に他フレームワークの良いとこどり的な噂で触ってみたことがあった。系譜としては、CodeIgniterの軽量な特徴を受け継いだシンプルなフレームワークになっていて、自由度が高めな印象がある。現在はどのようになっているか。

プロジェクト作成

今回は「FuelPHP 1.8.2」を利用する。

https://fuelphp.com/docs/

# 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とかもやってみる。