CakePHP3でのデバッグコードはdebug()を使うと良い

phpのデバッグといえば、print_rですが、CakePHP3では便利なメソッド

debug($data); 

が用意されているので、これを使うとよさそうです。

メリットとしては

呼ばれた場所となるファイルと行番号も出力してくれます。

また、 Configure::read(‘debug’) に true がセットされているときだけ出力されるため、これらのコードであれば

コメントアウトなどしなくてもConfigureのdebugをfalseにするだけで消すことができます。 (dd(),pr(),pj()も同様)

フラグを変えるだけで済むので、デバッグコードの消し忘れでプギャーとなるのがなくなりますね。素の print_r() 使った場合は当然ながら表示されますのでご注意ください。

debug($user);

出力例

 /src/Controller/UsersController.php (line 61)

object(App\Model\Entity\User) {
    'name' => 'あ',
...
}

dd()はdebug()のエイリアスになります。

pr() はprint_r()のエイリアスになります。

出力例

App\Model\Entity\User Object
(
    [name] => a
)

pj() はprintf()のエイリアスになります。

出力例

{
    "name": "hoge",
}

Debuggerクラス

以下のようにして使います。

use Cake\Error\Debugger;
Debugger::dump($user);

出力例

object(App\Model\Entity\User) {

    'name' => 'a',

}

ログ出力によるデバッグ

画面上を汚したくない時にはログ出力してデバッグすると便利です。

use Cake\Error\Debugger;
Debugger::log($user);

logs/debug.log

に出力されます。

出力例

object(App\Model\Entity\User) {

    'name' => 'あああああああ',

}

その他にはControllerなどいい感じの箇所では以下の方法でログ出力が可能です。

$this->log($user, 'debug');

logs/debug.log

に出力されます。

出力例

日本語はエンコードされるようです。

2017-04-19 05:30:05 Debug: {
    "name": "\u3060\u7570\u65e5\u672c",
}

https://book.cakephp.org/3.0/ja/development/debugging.html#