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の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説
CakePHP4で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定しそれを読み込み判別する。
-
-
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でCSVファイルをアップロードしレコードを追加、更新する処理の作成方法の解説。モデルとは直接関連しないフォームからCSVファイルをアップロードするため汎用的に使用可能。
-
-
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説
CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。
-
-
CakePHP4のController内でViewテンプレート、レイアウトの変更設定を記述する方法
CakePHP4でテンプレートやレイアウトファイルをデフォルトから変更する場合は「render()」を使用するが、記述場所はできるだけコントローラー内の最後の方に書く方がいい。
-
-
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でajaxを利用する処理の実装方法を解説。プルダウンを変更するとデータベースの値を取得し検索結果の内容を変更するというような処理を想定。CakePHP3.6以降の CSRF対策対応済。
-
-
CakePHP4、5でSELECT telephone as tel FROM usersの様にasでカラムに別名を付ける方法
CakePHP4、CakePHP5でクリエビルダーを利用してテーブルからレコードを取得する際、asを使用してカラムの別名で値を取得したい場合の対応方法を解説。また、別名にはハイフンやアスタリスクなど使用できない文字がある点も解説。
-
-
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
PHPでサーバ情報、環境情報を取得する際は「
$_SERVER」を利用するが、似たような情報をCakePHPの関数で取得する際は「getUri()」を使用する。取得出来る値は一致するものもあるが、違うものもあり便利な使い方もある。
-
-
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でレコードを追加、更新(Insert、Update)する記述方法を解説。1件ずつ処理、全件をまとめて処理、条件に該当する複数件のレコードを処理方法をサンプルコードを用いて解説。
-
-
CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説
CakePHP4、5で指定したカラムに特定の値に該当のレコードの有無をチェックするにはexists()を使う。単純にカラムを指定する方法から複数条件をand、orで探すこともできる。
-
-
CakePHP 2.3 bakeの超初心者向けフォロー講座
CakePHP 2.3 bakeの超初心者向けフォロー講座