正解率16.2%『はじめてのフレームワークとしての FuelPHP』プレゼントキャンペーンの問題解説

『はじめてのフレームワークとしての FuelPHP』プレゼントキャンペーン が終了しました。

このキャンペーンには 2つのプレゼントがあり、「プレゼントその2」は問題に正解する必要がありました。この問題の正解率が予想外に低かったので、今日は、その解説をします。

問題

「プレゼントその2」の問題は以下でした。

『はじめてのフレームワークとしての FuelPHP』の第3章にあるリスト 3.2 (PDF版 P.83〜84) の中のメソッドで返されるオブジェクトのクラス名を完全修飾名で回答してください。

なお、問題のリスト (ソースコード) は「プレゼントその1」で第3章までの PDF を無料ダウンロードできるようになっていました。

もともとこの問題は応用問題であり、該当するソースを見ただけでは、簡単には回答できません。ですから、正解率が低くなることは予想していました。

しかし、結果は 正解率は 16.2% という低さでした。ざっと 6人に 1人しか正解できませんでした。

PHP ユーザ大丈夫か?とも思いましたが、応募者が生粋の PHP ユーザでない可能性もあるかと思い直しました。PHPフレームワークってどんなんだろう?みたいな他言語のユーザとか。実際どうなのかはわかりませんが。

解説

まず、この問題を解くためには、「完全修飾名」が何かを知らないといけません。これは PHP 5.3 で導入された名前空間に関連する用語です。知らなかった人は PHP名前空間について調べてください。

『はじめてのフレームワークとしての FuelPHP』では「5.7.1 名前空間とは?」(PDF 版 P.140) で解説されています。この完全修飾名を理解していない回答が大部分でした。

さて、この問題を解くもっとも早い方法は、ソースを実行し return する直前に、以下のコードを追加して実際に確認することです。

Debug::dump($view);

以下のように終了してしまえば、余計なものが表示されずもっとわかりやすいかも知れません。

Debug::dump($view); exit;

なお、Debug::dump() は var_dump() 関数を拡張した FuelPHP のメソッドです。var_dump() を使っても確認できますが、Debug::dump() の方が表示がきれいになります。

クラスの完全修飾名がわかったら正解できますが、何故、その名前なのかは、FuelPHP の内部仕様を知る必要があります。FuelPHP のオートローダについて調べるか、『はじめてのフレームワークとしての FuelPHP』の「5.7.3 FuelPHP名前空間」(PDF 版 P.141) をお読みください。