[PHP]PHPのMVCフレームワークFuelをインストールしてみる。
最近出たばかりのPHPのMVCフレームワークであるFuelを試してみました。
インストールはcurlを使って一発おーけー。成功するとoilというコマンドが使えるようになります。Railsで言うrailsコマンドみたいなものですね。
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 244 100 244 0 0 517 0 –:–:– –:–:– –:–:– 1487
$ which oil
/usr/bin/oil
次にPHPが動作するディレクトリに移って、oilコマンドでアプリのスケルトンを作成します。
Cloning into ./blog…
remote: Counting objects: 13771, done.
remote: Compressing objects: 100% (4693/4693), done.
remote: Total 13771 (delta 9439), reused 12989 (delta 8854)
Receiving objects: 100% (13771/13771), 1.99 MiB | 355 KiB/s, done.
Resolving deltas: 100% (9439/9439), done.
Submodule ‘docs’ (git://github.com/fuel/docs.git) registered for path ‘docs’
Submodule ‘fuel/core’ (git://github.com/fuel/core.git) registered for path ‘fuel/core’
Submodule ‘fuel/packages/auth’ (git://github.com/fuel/auth.git) registered for path ‘fuel/packages/auth’
Submodule ‘fuel/packages/oil’ (git://github.com/fuel/oil.git) registered for path ‘fuel/packages/oil’
Submodule ‘fuel/packages/orm’ (git://github.com/fuel/orm.git) registered for path ‘fuel/packages/orm’
Cloning into docs…
remote: Counting objects: 3422, done.
remote: Compressing objects: 100% (1271/1271), done.
remote: Total 3422 (delta 2277), reused 3227 (delta 2097)
Receiving objects: 100% (3422/3422), 765.80 KiB | 154 KiB/s, done.
Resolving deltas: 100% (2277/2277), done.
Submodule path ‘docs’: checked out ’71c16e068324e200f533c26aebb4b42b394562a8′
Cloning into fuel/core…
remote: Counting objects: 17159, done.
remote: Compressing objects: 100% (5174/5174), done.
remote: Total 17159 (delta 11902), reused 16939 (delta 11706)
Receiving objects: 100% (17159/17159), 2.64 MiB | 258 KiB/s, done.
Resolving deltas: 100% (11902/11902), done.
Submodule path ‘fuel/core’: checked out ‘fcf88526205234a3b5d5d6553c7c3395c7fc83b3’
Cloning into fuel/packages/auth…
remote: Counting objects: 384, done.
remote: Compressing objects: 100% (242/242), done.
remote: Total 384 (delta 164), reused 354 (delta 142)
Receiving objects: 100% (384/384), 51.42 KiB, done.
Resolving deltas: 100% (164/164), done.
Submodule path ‘fuel/packages/auth’: checked out ‘d5abd56317bdc448c3f4ccd4355509798e71934e’
Cloning into fuel/packages/oil…
remote: Counting objects: 262, done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 262 (delta 137), reused 249 (delta 127)
Receiving objects: 100% (262/262), 43.96 KiB, done.
Resolving deltas: 100% (137/137), done.
Submodule path ‘fuel/packages/oil’: checked out ‘5ef10c039f91432f450ab2d1b18706a712f7521f’
Cloning into fuel/packages/orm…
remote: Counting objects: 13958, done.
remote: Compressing objects: 100% (4121/4121), done.
remote: Total 13958 (delta 9635), reused 13932 (delta 9616)
Receiving objects: 100% (13958/13958), 2.01 MiB | 306 KiB/s, done.
Resolving deltas: 100% (9635/9635), done.
Submodule path ‘fuel/packages/orm’: checked out ‘cb3cc50d926914cace1fd6351cac4d94b3642971’
Made writable: /Users/***/Documents/Fuel/blog/fuel/app/cache
Made writable: /Users/***/Documents/Fuel/blog/fuel/app/logs
Made writable: /Users/***/Documents/Fuel/blog/fuel/app/tmp
Made writable: /Users/***/Documents/Fuel/blog/fuel/app/config
すると、下記のようなファイルやディレクトリが自動で作成されます。
この時点でhttp://localhost:8888/Fuel/blog/public/にアクセスすると下記のような画面が表示されます。簡単です!
自分でコントローラーを作成してみます。fuel/app/classes/controller/welcome.phpを削除して、代わりにhello.php(下記)を作って同じ場所に保存します。
http://localhost:8888/fuel/blog/public/Hello/indexにアクセスしてHello World!と表示されれば成功です。RailsやSinatraのようなフレームワークを知っている人であれば、コントローラーやアクションの命名規約からどのようなURLでアクセスすれば表示されるか分かってしまいますね。
次にViewを使ってみます。fuel/app/hello.phpを作成します。
さっき作成したfuel/app/classes/controller/hello.phpを修正します。
http://localhost:8888/fuel/blog/public/Hello/buddy/Obamaのbuddy/の後を変更すると、名前を動的に表示させることができます。
コンセプトとしてはRailsやSinatraなどのフレームワークイイトコどりみたいなのですが、既存のフレームワークに比べると洗練されてない印象があるので、これから先どう進化するか楽しみですね!
この記事を書くに当たり次のサイトを参考にさせていただきました(ちょこちょこ誤植があるので注意)。
[browsershot url=”http://net.tutsplus.com/tutorials/php/getting-started-with-the-fuel-php-framework/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+nettuts+%28Nettuts%2B%29″ width=”150″]