2013年11月23日土曜日

【バグ報告】FuelPHP1.7のRESTControllerの挙動について

バグ見つけました。
前回の

【バグ報告】FuelPHP1.7でViewModelが二回実行される


につづいて1.7のバグです。
前回も今回も1.8Dev版で治っており、コミュニティには報告されているため1.7.1では改修されてリリースされます。

対象 FuelPHP1.7(2013/11/23現在)

現象としてはURLで

/method.json

とアクセスするとJSONが本来吐かれますがこれを

/method

等の拡張子を指定せずに

HEADERS Accept text/html

の時には $response->body() の中がArrayになります。
具体的には直接拡張子をブラウザでアクセスした場合に発生します。
が本来はStringを期待してるのにArrayが来るのでエラーになります。
つまり結論から言うとFuelPHPのRESTControllerはHTMLの拡張子の実装はされていません。
ドキュメントには「シンプルなテーブルタグを吐き出す」となっていますが元々var_dumpしているだけでした。
これが1.7でvar_dumpすらせずにエラーになっていました。

対策としてはHTMLの実装が無いので必要なければ

/classes/controller/rest.php

--- a/classes/controller/rest.php 
+++ b/classes/controller/rest.php 
@@ -55,7 +55,7 @@ abstract class Controller_Rest extends \Controller 
        'jsonp'=> 'text/javascript', 
        'serialized' => 'application/vnd.php.serialized', 
        'php' => 'text/plain', 
-       'html' => 'text/html', 
+     //'html' => 'text/html', 
        'csv' => 'application/csv', 
    );   

'html' => 'text/html', をコメントアウト

と修正するのがいいと思います
今回はfuelphp_jpのMLに投稿してみました。
詳しい情報としてはこちら。

1.7のRESTControllerの挙動について(ML)

今回はMLに投稿してみました。
1.7.1や1.8の修正としては

  • HTMLはvar_dumpを実行すると言う仕様で統一する
  • ドキュメントはそのように修正する

という方針になったようです。
Githubのプルリクは英語必須でGitやGithubの使い方を覚えなきゃいけないのでハードルが高いと思います。
(まぁ間違ってたりしたらコメントくれてプルリク弾かれるだけなので気にせずガンガン練習がてらプルリク投げてもいい気もしますが)
ですがMLは日本語だしレスポンスも割と早いのでバグだったり質問は気軽に投げてみたらいいと思います。
僕も今回は優しく対応していただきました^^
と言うことでバグを見つけたらMLで報告。
バグかな?って思ったらMLを見てみる。
こんな流れで地雷を上手くさけて行ける気がしました。
と言うことでみなさんも是非ご参加ください!

FuelPHPの日本語グーグルグループ

  

2013年11月4日月曜日

CakePHPを使う人は是非とも読むべきレシピ本

CakePHP2定番レシピ119」をを読みました。




の本、結論から言うと『かなり良い』です。
理由としては以下のとおり3つ。

1 デバックのやり方がしっかり書いてある

よくある技術書は「うまく行った時の書き方」が書いてあるモノが多いです。
フレームワークは利用時に上手くいってる時は良いのですがハマった時に非常に苦しみます。
そこでデバックのやり方を知ってるか否かで効率は大きく変わってきます。
コードを書いてる時にミスをしない人は稀です。
そういった点からみて、まずデバックのやり方を書いてあるのは実際に使う際に非常に助かります。

2 セキュリティに配慮したレシピが多く書いてある

フレームワークの本は使い方を書いてあってもセキュリティについては書いてあるものは少ないです。
しかし現状ではセキュリティは考慮すべき項目でWebエンジニアとしては非常に重要な項目です。
このレシピ本はXSSへの対策をはじめ、SQLインジェクションなど対策として欠かすことの出来ない項目をしっかりフォローされています。
特にデータベースの扱いはモデルの章としてデータの扱いも含めて非常に細かく記載されてます。
ORMやクエリビルダを使ったことの無い方も必見です。

3 使いたいレシピがしっかりある

最後ですがプログラマーからするとこれが一番重要です。
どの技術書も読んで「へーこんなことがあるんだ」と思うことは多いでしょう。
ただそれが「あっこれ、○○で読んだやつだ!」と感じるシーンは少ないのでは?
このレシピ本は即戦力の情報が満載です。
例えば今までViewでSmartyを利用していた場面でのhelperの使い方。
またページャーやバリデーションの使い方などです。
これらは読んで今日から利用する機能でしょう。
そういった知識が事細かくフォローされています。
これは他のフレームワークの経験がある人にも非常に大切なことです。
このレシピ本なら「○○ではこうやって出来たけどCakePHPはどうやるの?」と言った疑問に答えてくれるでしょう。

■まとめ

CakePHPはPHP界隈では利用例も多く日本語情報も多いです。
ですがそれ故に1系の頃の「使えない情報」も多いのが現実です。
特にレシピ的なことは個人のブログが情報源になっており、ヴァージョンアップに伴う更新も行われていないと思います。
これからCakePHPを使いたい人も然ることならが「今までCakePHPをガンガン使ってた人」も2系の情報を仕入れるためにも一読して損はないかと思います。
これを読めば「あーこれってこうやると簡単になるんだ。」という新しい知識に出会えると思います。
私もこの本は会社の机の上に常備しています。