FirePHPを使用してZend Frameworkでデバッグする

Zend Framework and FrePHP



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つだけ含まれています。 このデータベース要求またはそのデータベース要求の発信元を知ることは非常に役立ちます。



次のようになります(クリック可能):

DB_Profiler



デバッグする



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 ; //いくつかの変数を出力します


結果はコンソールで見ることができます:

Debug



バックトレースは最後の行として表示されるため、デバッグを呼び出す行を見つけるのに問題はありません。 ただし、このデバッグ方法には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コンソールになります。



Timer



どこで:





これらのクラスは、次のリンクからダウンロードできます。FirePHPDebug(2.5 Kb)



関連リンク:





PSアイデアをありがとうBaziak 'u ...



私のブログの記事へのリンク: FirePHPを使用したZend Frameworkでのデバッグ



All Articles