LoginSignup
22
23

More than 5 years have passed since last update.

FuelPHPで簡単なシステムを作って開発の雰囲気をつかむ

Last updated at Posted at 2015-09-13

調査

FuelPHP 1.xの最終バージョンが1.8になり、それは、2.0がリリースされるときにリリースされます。1.8はLTS版となり、新機能は追加されませんが、バグ修正とセキュリティ修正は長期間提供されます。

とのことなので、枯れた最新安定版は今は1.7系を攻めておけば良いと理解しました。実際、本家サイトに行くと、1.7.3をDownloadするように書かれています。

方針

  • composerでの開発
  • 仮想環境を使わずにローカル開発
  • MAMPやXAMPPの環境前提
  • 文法は最新の方式に近づけておく(arrayをいっぱい書かない)

手順

前提

composerでのインストール

composer create-project fuel/fuel:dev-1.7/master --prefer-dist fuelsample

ダラダラダラっと沢山のファイルがダウンロードされます。

途中GitHubのトークンを作るように促された場合には、書いてあるURL( こんなの https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+AREION.local+2015-09-13+1338 )を 貼ってやればGitHub上のトークン作成画面へ飛べます。作ったらトークンをコピペ(表示されないけど、コピペ)してエンターすれば良いです。

サーバ起動

下記のどちらかで出来る。MAMPを入れているなら2番目の方法で良いかな?

  1. php oil serverを打つ
  2. publicディレクトリをApacheのWEBルートにする

起動してWelcome画面が無事表示されれば大成功!

最初の一歩目の情報は?

あまり情報が日本語サイトからはリンクされていません。通常チュートリアルがありそうなのだけれども、外部サイトへのリンクになっていました。

上記チュートリアルを参考にして簡単なアプリを作る

  • 簡単なBBS。誰でも投稿できて時系列で一覧されるだけ
  • 今回はスレッドを作成するところまで
  • タイトル、本文の入力必須
  • つまり、Scaffoldに毛の生えた程度のもの

準備

設定でORMを有効にする

always_loadのキーを活かして、その中のormも活かしましょう。

fuel/app/config/config.php(259行目付近)
    'always_load'  => array(
        'packages'  => array(
          'orm',
        ),
    )

DBを作成する

phpMyAdminから作っていいでしょう。Userを作成して、同名のDBを作って割り当てるオプションを使うのが簡単です。

私の場合には下記のようにしました。設定も一緒にしておきます。

  • ユーザ: fuelsample
  • DB: fuelsample
  • パスワード: testtest

一応絵文字にも対応できるようにcharsetを指定しました(きくんですよね?違う?)。
参考にしたのは下記です。
http://fuelphp.jp/docs/1.7/classes/database/introduction.html

fuel/app/config/development/db.php

return [
    'default' => [
        'connection'  => [
            'dsn'        => 'mysql:host=localhost;dbname=fuelsample',
            'username'   => 'fuelsample',
            'password'   => 'testtest',
        ],
        'charset'        => 'utf8mb4',
    ],
];

Scaffold

php oil generate scaffold thread title:varchar[255] body:text

ただし、MySQLを利用している人は下記でやらないと created_at、updated_atがint型になるので注意。 こちら 参照のこと。

php oil generate scaffold thread title:varchar[255] body:text --mysql-timestamp 

php oil destroyは無さそうなので、失敗したらちゃちゃっと戻す感じでは使えない様子。

出来上がったファイル群の中で気になるのはマイグレーションですが、created_atupdated_atも作られ、idautoincrementするものでした。

【注意!】
下記のような事があるので、MySQLのTimestampが使いたい場合にはオプション指定が必要かと。
http://qiita.com/ms2sato/items/880a5603a8601298c297

Migrate

php oil refine migrate

結果を見ると、指定しなければデフォルトでNOT_NULL制約のようです。CakePHP3と同じですね。

アクセス!

/thread/indexへアクセスしてみましょう。ちゃんと表示されたでしょうか。新規作成、一覧、更新、削除(いわゆるCRUD)ができているはずです。めっちゃ簡単ですね。この辺はScaffoldを実現しているシステムでは結構一般的ですけれども。

もしも下記のように

Class 'Orm\Model' not found

と出てしまう時には、 uel/app/config/config.phpで、always_loadormのところのコメントがちゃんと外れているか確認したほうが良さそうです。

おしまいに

この次に気になるのはJOIN系の扱いなので、そんなエントリを次に書きたいですね!

結果のコードはここに置いときます。
https://github.com/ms2sato/fuelsample

以下に続きます

22
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
23