調査
FuelPHP 1.xの最終バージョンが1.8になり、それは、2.0がリリースされるときにリリースされます。1.8はLTS版となり、新機能は追加されませんが、バグ修正とセキュリティ修正は長期間提供されます。
とのことなので、枯れた最新安定版は今は1.7系を攻めておけば良いと理解しました。実際、本家サイトに行くと、1.7.3をDownloadするように書かれています。
方針
- composerでの開発
- 仮想環境を使わずにローカル開発
- MAMPやXAMPPの環境前提
- 文法は最新の方式に近づけておく(
array
をいっぱい書かない)
手順
前提
- composerは既にインストールされているものとする。
- Windowsの場合はインストーラでやれるらしい http://qiita.com/mikoski01/items/266469535e860312145d
- PHPのパスはMAMPに通っているものとする。
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番目の方法で良いかな?
-
php oil server
を打つ - publicディレクトリをApacheのWEBルートにする
起動してWelcome画面が無事表示されれば大成功!
最初の一歩目の情報は?
あまり情報が日本語サイトからはリンクされていません。通常チュートリアルがありそうなのだけれども、外部サイトへのリンクになっていました。
- Wikiがあった のでこちらは良いかも
- 上記Wikiからリンクされていたチュートリアル (
http://blog.a-way-out.net/blog/2014/07/24/fuelphp-blog-tutorial-part1/)
上記チュートリアルを参考にして簡単なアプリを作る
- 簡単なBBS。誰でも投稿できて時系列で一覧されるだけ
- 今回はスレッドを作成するところまで
- タイトル、本文の入力必須
- つまり、Scaffoldに毛の生えた程度のもの
準備
設定でORMを有効にする
always_load
のキーを活かして、その中のorm
も活かしましょう。
'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
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_at
、updated_at
も作られ、id
もautoincrement
するものでした。
【注意!】
下記のような事があるので、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_load
とorm
のところのコメントがちゃんと外れているか確認したほうが良さそうです。
おしまいに
この次に気になるのはJOIN系の扱いなので、そんなエントリを次に書きたいですね!
結果のコードはここに置いときます。
https://github.com/ms2sato/fuelsample
以下に続きます
- リレーション
- [JOINして読み出しまで] (http://qiita.com/ms2sato/items/5aef782a669bea7edc12)
- INSERT
- created_at、updated_at がintegerになっているので注意