2013年2月13日水曜日

今からFuelPHPを使う人が知るべき5つのこと+1

FuelPHPいいよFuelPHP。
正直、新規の方にオススメするphpのフレームワークはコレで一択です。
と溺愛してますが職場はZendフレームワーク...
で久々にFuel触ってハマッたのでメモを残しときます。
つまりこんなタイトルですが自分用です(キリッ

#### 2014/09/24にリメイク版作りました ####

OSC2014@広島に行ってきました #osc14hi

#### ここまで ####

1 FuelPHPの使い方

こちらのスライドが参考になります。
というかほぼ網羅してて完璧です。



こちらも綺麗にまとまっていてすごくわかりやすいです。

10分でわかるFuelPHP


ただサーバの設定によっては動かない場合も。
理由はデフォルトのtimezoneの設定がされてないこと。
なので

/etc/php.ini 



date.timezone = "Asia/Tokyo"

を追記するか

fuel/app/config/config.php

のArrayに

'default_timezone'   => 'Asia/Tokyo'

を追記するかのどちらかで対応出来ます。
また詳しくはこちらに書いてあります。

2 JQueryMobileの使い方(localから指定する場合)
まずjQueryMobileサイトからソースを落としてきます。
それとJqueryも必要ですから落として来ます。

ソースを解凍してここにおきます。

public/assets/js
public/assets/css

読み込みはviewにこんな感じ

echo Asset::css('jquery.mobile-1.2.0.min.css');
echo Asset::js('jquery-1.8.3.min.js');
echo Asset::js('jquery.mobile-1.2.0.min.js');

URLを気にせず指定のファイルを直感的に呼べるのはいいですね。
でポイントですがJqueryMobileの1.2.0はJqueryの

1.9系では動かないので1.8系 ※2013/02/13現在

を使いましょう。

3 TwitterAPIとの連携
Fuelのイケてるところと言えばパッケージ。
その導入はシンプルです。
GitHubからサクッとインストール出来るため、皆さんにもどんどん活用して欲しいですね。
と言うわけでここではTwitterAPIとの連携方法について。
まずはfuel-twitterをインストール。
インストールから使い方まではこちらのブログにまとめてあります。
インストール出来ました?
APIを叩いてみましょう。
値が帰ってきてアプリ連携出来ましたね!
次はユーザー情報取ってきましょう。
どうでした?
エラー出たでしょ。

Twitter::get('account/verify_credentials');

そう、コレ動かねーから。

TwitterAPIのバージョンアップに対応してないんですよ本家。
なのでGitHubのNetworkからブランチ追って新しいヤツのDiff見て動く奴探して来ました。
2013/02/13時点では動くソースを上げておきます。

forkして改修したソース

これを入れて試して見ましょう。
ほら、動きましたね!!
Libraryを導入すると実装が簡単に出来る反面、APIなどの仕様変更で動かなくなるモノも多いので注意しましょう。
でもメジャーなモノならGitHubのブランチを追ったりすると大体直ってます。

 4 HTMLヘルパーについて
ここの記事がすごく参考になります。

FuelPHP の Fieldset を使おう(Form の自動生成)Add Star

ほんとSmartyとか必要ない。
最初コレ知らなくてviewModelにゴリゴリプログラム書いてました。
8割くらいこれで要らなくなりました(遠い目

5 FuelはPostgreSQLに優しくない
具体的にはクエリビルダがPostgreSQLのArray型に対応してないです。
というか多くのORMたちは対応してないのですが...
特にハマるのはInsert。
なので簡単な例を載せておきます。

//idをarray型とする
$SQL = 'INSERT INTO t_hoge(id) VALUES (:id)';
//{}で囲ったカンマ区切りの任意の文字列を作る
$id = '{1,2,3}';
$query = DB::query($SQL)->bind('id', $id)->execute();

これは最終的なSQLとしては

INSERT INTO t_hoge(id) VALUES ('{1,2,3}')
となっています。
実施のプログラムは$idの生成を動的に配列から変換してやってます。
自分的にもなんだかなぁって感じです。
もっとスマートなやり方のマサカリ、お待ちしております!!
ついでにクエリビルダの使い方はこちらがすごくまとまってます。


ということで現在、仕事じゃないWEBアプリを作ってます。
公開までもう少し掛かりそうですがまた公開した時に宣伝も兼ねて苦労話したいと思いますw

更に+1 2013/03/27に追記

第4回 岡山PHP勉強会


こちらの登壇資料を追加しておきます。





仕事でFuelPHPを使い始めたので気づいたことを纏めました。

FuelPHPを仕事で使うときに知っておくべき4つのこと