エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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に表示させるのではなくログに出力させる方法で編集の確認をすることも可能になります。

 - CakePHP 3.x 4.x 5.x

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説

CakePHP3でパンくずの指定方法の解説。2つのヘルパーがあるが簡単なHTMLヘルパーを使った方法を、実際の状況に合わせて3つのパターン(エレメント化、ブロック化)にして解説。

CakePHP4系、5系でカラムを指定して値があるかないかのチェックする
CakePHP4系、CakePHP5系のexists()でカラムを指定して値の有無をチェックする方法解説

CakePHP4、5で指定したカラムに特定の値に該当のレコードの有無をチェックするにはexists()を使う。単純にカラムを指定する方法から複数条件をand、orで探すこともできる。

CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介
CakePHP4、5で$_SERVERと同じようにURIを取得する「getUri()」の紹介

PHPでサーバ情報、環境情報を取得する際は「$_SERVER」を利用するが、似たような情報をCakePHPの関数で取得する際は「getUri()」を使用する。取得出来る値は一致するものもあるが、違うものもあり便利な使い方もある。

CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要
CakePHP4のcake cache clear_allでPermission deniedはパーミッションの変更が必要

CakePHP4でキャッシュをクリアするコマンドcake cache clear_allでPermission deniedのエラーが出るのはcakeにパーミッションが足りないとき。その対処方法を解説。

CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装

CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因

Bakeして自動生成した入力フォーム処理を元に少し処理を追加したら、入力エラーがあってもエラーメッセージが表示されなくなった。原因はリダイレクトの処理にあった。

CakePHP3ログファイルの出力方法・$this->log()の解説
CakePHP3ログファイルへの出力・$this->log()、独自ログへの出力方法の解説

コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。

CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法
CakePHP4のクリエビルダーを使用してOR条件をAND条件でつなぐSQL文を作る方法

CakePHP4のクリエビルダーを使って複数のOR条件をANDでつなぐSQL文を作成する方法を解説。OR条件を記述したwhere句を2つつなげて記述する。