[PHP] PDOでクラスをフェッチする場合のfetch()とfetchAll()の挙動

きちんと理解するためにサンプルコードを書いて挙動を確かめてみた。

サンプルコード

参考サイト

PHP: PDO::setAttribute – Manual
http://php.net/manual/ja/pdo.setattribute.php

PDO::ATTR_ERRMODE: エラーレポート
– PDO::ERRMODE_SILENT: エラーコードのみ設定する
– PDO::ERRMODE_WARNING: E_WARNING を発生させる
– PDO::ERRMODE_EXCEPTION: 例外を投げる

PHP: PDOStatement::fetch – Manual
http://php.net/manual/ja/pdostatement.fetch.php

PDO::ATTR_DEFAULT_FETCH_MODE: デフォルトのフェッチモード
– PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。
– PDO::FETCH_BOTH (デフォルト): 結果セットに返された際のカラム名と 0 で始まるカラム番号で添字を付けた配列を返します。
– PDO::FETCH_BOUND: TRUE を返し、結果セットのカラムの値を PDOStatement::bindColumn() メソッドでバインドされた PHP 変数に代入します。
– PDO::FETCH_CLASS: 結果セットのカラムがクラス内の名前付けされたプロパティにマッピングされている、要求されたクラスの新規インスタンスを返します。 fetch_style に PDO::FETCH_CLASSTYPE が 含まれている場合 (例: PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE) は、最初のカラムの値から クラス名を決定します。
– PDO::FETCH_INTO: 結果セットのカラムがクラス内の名前付けされたプロパティに マッピングされている要求された既存インスタンスを更新します。
– PDO::FETCH_LAZY: PDO::FETCH_BOTH とPDO::FETCH_OBJの 組合せで、オブジェクト変数名を作成します。
– PDO::FETCH_NAMED: PDO::FETCH_ASSOC と同じ形式の配列を返します。 ただし、同じ名前のカラムが複数あった場合は、そのキーが指す値は、 同じ名前のカラムのすべての値を含む配列になります。
– PDO::FETCH_NUM: 結果セットに返された際の 0 から始まるカラム番号を添字とする配列を返します。
– PDO::FETCH_OBJ: 結果セットに返された際のカラム名と同名のプロパティを有する 匿名のオブジェクトを返します。

PHP: MySQL (PDO) – Manual
http://php.net/manual/ja/ref.pdo-mysql.php

PDO::MYSQL_ATTR_INIT_COMMAND: MySQL サーバーへの接続時に実行するコマンド

PHP: 定義済み定数 – Manual
http://php.net/manual/ja/pdo.constants.php

PDO::PARAM_BOOL (integer): ブールデータ型を表します。
PDO::PARAM_NULL (integer): SQL NULL データ型を表します。
PDO::PARAM_INT (integer): SQL INTEGER データ型を表します。
PDO::PARAM_STR (integer): SQL CHAR, VARCHAR, または他の文字列データ型を表します。
PDO::PARAM_LOB (integer): SQL ラージオブジェクト型を表します。