1つのルールがあります-デバッグ情報を顧客に表示しないでください。この目的のために通常2つの構成がありますが、顧客が非常に好奇心がある場合、または審美的な理由でキロバイトのデバッグ情報を非表示にしますか? これらの善意で、FirePHPは私たちを助けます。
知らない人のために-FirePHPはMozilla FirefoxのFireBugプラグインの拡張機能です
この目的のために、Zend Framewrokプロジェクトのbootsrap.phpを少し変更し、いくつかのファイルをライブラリに追加する必要があります。 簡単なものから始めます-ブートストラップを変更します:
//設定ファイルを読み込んだ後、このコードを貼り付けます
{
//構成の変数。デバッグ情報の出力を担当します
if ( $ config- > application- > debug ) {
/ *すべてのエラーとSTRICT通知をオンにします* /
error_reporting ( E_ALL | E_STRICT ) ;
ini_set ( 'display_errors' 、 1 ) ;
ini_set ( 'display_startup_errors' 、 1 ) ;
require_once 'Core / Debug.php' ; // Core_Debugクラスを接続します-それが行うことはさらに読まれます
Core_Debug :: setEnabled ( true ) ;
Core_Debug :: getGenerateTime ( 'Begin' ) ;
} else {
/ *すべてのエラーをオフにします* /
error_reporting ( 0 ) ;
ini_set ( 'display_errors' 、 0 ) ;
ini_set ( 'display_startup_errors' 、 0 ) ;
}
}
//これは、DBアダプターの初期化後のインクルードです
{
//彼の親密さのようなもの
$ dbAdapter = Zend_Db :: factory ( $ config- > database ) ;
//プロファイラを接続します
if ( $ config- > application- > debug ) {
require_once 'Core / Db / Profiler.php' ; // Core_Db_Profilerを接続します-これはデータベース用の標準的なプロファイラーではありません
$ profiler = new Core_Db_Profiler ( 'Profiler' ) ;
$プロファイラー -> setEnabled ( true ) ;
$ dbAdapter- > setProfiler ( $ profiler ) ;
}
}
それでは、美味しいものに移りましょう...
DB_Profiler
Core_Db_Profiler(すべてのルールではCore_Db_Profiler_Firebugと呼ばれるべきですが)はデータベース(
Zend DB Profilerを参照)を使用してアプリケーションをデバッグするためのクラスです。Zend_Db_Profiler_Firebugから
継承され、変更が1つだけ含まれています。 このデータベース要求またはそのデータベース要求の発信元を知ることは非常に役立ちます。
次のようになります(クリック可能):
デバッグする
Core_Debugクラスは
Zend_Debugを継承し、
FirePHPと連携するための機能を拡張します
。FireBugコンソールに変数に関する情報を表示するデバッグ機能が追加されます
。PHPコードの例を示します。
$ a = $ b = $ c = array ( 123、456、789 ) ;
Core_Debug :: debug ( $ a ) ; // 1つの変数を出力します
Core_Debug :: debug ( $ a 、 $ b 、 $ c ) ; //いくつかの変数を出力します
結果はコンソールで見ることができます:
バックトレースは最後の行として表示されるため、デバッグを呼び出す行を見つけるのに問題はありません。 ただし、このデバッグ方法には1つの問題があります。データが多すぎると、ブラウザーがフリーズし、JavaScriptを実行しようとします。
Core_Debugクラスには別の便利な関数があります-getGenerateTimeと呼ばれます-Core_Debugを接続した直後に呼び出したのは私たちでした-この関数の主なタスクは、コードによってタイムスタンプを残すことです。 メソッドを初めて呼び出します-呼び出し時間が保存され、2番目を呼び出します-前の呼び出しと最初の呼び出しの差を保存(表示)します。 次の例を挙げましょう。コードには3つの呼び出しがあります。
// Core_Debugを接続した直後
require_once 'Core / Debug.php' ;
Core_Debug :: setEnabled ( true ) ;
Core_Debug :: getGenerateTime ( 'Begin' ) ;
/ * ... * /
//インデックスコントローラーのインデックスアクション
Core_Debug :: getGenerateTime ( 'IndexAction' ) ;
/ * ... * /
//発送前
Core_Debug :: getGenerateTime ( 'Before Dispatch' ) ;
Zend_Controller_Front :: getInstance ( ) -> dispatch ( ) ;
結果は再びFireBugコンソールになります。
どこで:
- 時間(秒) -前の「ニック」からの時間
- 合計(秒) -最初の「ニック」からの時間
- メモリー(Kb) -前の「ニック」から消費されたメモリーの数
- 合計(Kb) -すべての時間に消費されたメモリの量
これらのクラスは、次のリンクからダウンロードできます
。FirePHPDebug(2.5 Kb)関連リンク:
PSアイデアをありがとう
Baziak 'u ...
私のブログの記事へのリンク:
FirePHPを使用したZend Frameworkでのデバッグ