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

@iwasaki 31views 更新:2017年4月17日

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#

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません