CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力
2014/11/14
CakePHPで Model、Controllerの変数をログに出力
変数の情報をログに出力する方法
CakePHPのプログラムを組んでいるとき、Modelの中の変数がどうなっているのかを見たいなぁ、思うことがあると思いますが、その方法を確認しましたので、メモをしておきます。
CakePHPの Search Pluginの使い方を探しているときに下記のサイトを見つけました。
http://kamakurasoft.net/blog/?p=1479
ここに、Modelの中の変数をログとして出力する方法が書かれていましたので、参考にさせていただきました。
例を挙げます。
今回の例は、「CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索」で作成をしました IDを IN句による検索をする場合の処理をベースに作成しました。
この処理の際に function内の変数を見る場合などは下記の様に「$this->log( $data );」「$this->log( $query );」を設定します。
そうすることで、「/app/tmp/logs/error.log」にエラーメッセージとともにログが出力されます。
————–(/app/Model/User.php)
<?php
class User extends AppModel {
:
:
// 検索対象のフィルタ設定
public $filterArgs = array(
array('name' => 'id', 'type' => 'subquery', 'method' => 'searchIn', 'field' => 'User.id'),
array('name' => 'username', 'type' => 'like', 'field' => 'User.username'),
array('name' => 'nickname', 'type' => 'like', 'field' => 'Profile.nickname'),
);
function searchIn($data = array()) {
$this->log( $data );
$data['id'] .= ',20';
$query = mb_ereg_replace ( '[^0-9]', ',', $data['id'] );
$query = mb_ereg_replace ( ',+', ',', $query );
$query = mb_ereg_replace ( '^,', '', $query );
$query = mb_ereg_replace ( ',$', '', $query );
$this->log( $query );
return $query;
}
:
:
}
————–
Modelの中は、そもそも変数をどのように処理しているのかが分からない場合が多く、マニュアル、もしくは、解説していただいているサイトがないとどうしようもない場合が多々あります。
それでも、こうやってログとして変数の中身を確認できることで変数の中身の理解が進み、より安心してプログラムが書けるようになると思います。
この「$this->log( $query );」の記述を controllerに置くこともできます。
それによって、Viewに表示させるのではなくログに出力させる方法で編集の確認をすることも可能になります。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。
-
-
CakePHP3のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP3の英語のメッセージを日本語化(多言語化)する手順を解説。オリジナルのメッセージを作成する方法やプログラムで文言を追加する場合の対応なども解説。
-
-
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4系、5系のログイン認証の可否のチェック、および、ログインユーザの情報を取得する方法のまとめ。複数の方法があるが手続きが微妙に異なるためまとめてみた。
-
-
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。
-
-
CakePHP2の検索Plugin CakeDC/Searchで重複を省くgroup by(distinct)の実装方法
CakePHP2の検索プラグイン「CakeDC/Search」で、重複レコードを省くgroup by、distinctを使う方法についての解説。設定する場所はpaginatorの条件とするので、find()関数と同じ。
-
-
CakePHP 2.3 Search Pluginで検索処理 その1設置方法
CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。
-
-
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。
-
-
CakePHP4、5の認証処理で認証が通らない際の確認方法と確認箇所の紹介
CakePHP4、5系の認証処理でログイン認証が通らない場合の確認方法、確認箇所を解説。ログ出力し、ステータスを確認するが、ステータスの内容も紹介。それはそのままusernameを変更する際のポイントでもある。
-
-
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4でキャッシュをクリアするコマンドcake cache clear_allでPermission deniedのエラーが出るのはcakeにパーミッションが足りないとき。その対処方法を解説。
-
-
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説
コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。