ホームページ > バックエンド開発 > PHPチュートリアル > プライベートデバッグ機能の最適化

プライベートデバッグ機能の最適化

WBOY
リリース: 2016-06-13 12:57:05
オリジナル
845 人が閲覧しました

プライベート デバッグ関数の最適化
1. 少し気まぐれかもしれませんが、この関数を呼び出すファイルのファイル名と行番号を取得したいと考えています。現在の解決策は、
の外部から __FILE__ と __LINE__ を渡すことです。
2. 外部から渡されたデバッグ変数の名前を取得したい場合は、次のように割り当てます。この関数内のこの変数の名前を知るには、abc
と呼ばれます。
3. 他の言語の typeof と同様に、変数の型を取得します。ここで変数が文字列であると仮定しますが、 typeof($data) をエコーする方法はありませんが、 if(is_string($data)) echo ' を実行します。文字列';.

4. さらに最適化の提案を提案するには、変換結果を書き留めてください~


====================
この機能は最も単純な
から始まりました 関数デバッグ($data, $die = false){
echo '

';<br>
Print_r($data);<br>
echo '
';
If($die)die();
}
今日、次のコードを見てから 1 年以上が経ちました。変数値をデバッグするのは便利です。私は xDebug などの複雑なデバッグ フレームワークを学ぶのが面倒です。実際、私のデバッグ ニーズは上記と両方です。以下のコードに反映されています。これ以上の要件はありません。
大きなプログラム本体のあらゆる場所でいくつかの値をエコーし​​ようとしたことがありますか? コードをデバッグして修正した後でも、デバッグされたエコー値が実行時に出力されることに気づきましたが、エコーがどこに配置されたか覚えていないことがわかりました。この呼び出しのファイルの場所と行番号を知る必要があります。その他のデバッグ要件も含めて、変数の内容、長さ、型を知るだけで、それがこの内容のファイルの場所になります。


上のコード:

$a = 'xx';
$b = 45;
$c = true;
$d = false;
$e = null;
$f = 新しい stdClass();
$g = 配列(
'a' => 'v1',
'b' => 'v2',
);


デバッグ($a);
デバッグ($b);
デバッグ($c);
デバッグ($d);
デバッグ($d);
デバッグ($e);
デバッグ($f);
デバッグ($g);


関数デバッグ($data, $die = false, $file = null, $line = null){
static $debugCount = 0 //デバッグカウンター
; echo '
================= 新しいデバッグ ポイント: '.++$debugCount ' ========================
';
If($file)echo "ファイル名: $file
n";
If($line)echo "行数: $line
n";
$len = strlen($data);
If($len)echo 'コンテンツの長さ:'.$len."
n";
echo "変数名: a
n"; //外部からパラメータを渡すときにdebug($a)の変数名'a'を取得する方法はありますか?
echo "
n";<br>
Print_r(var_export($data, true));<br>
echo "
n";


If($die){
exit('
return');
}
それ以外の場合は $debugCount;
を返します }


------解决方案---------
関数 debug()<br>
{<br>
    グローバル $config;<br>
    if(!$config['debug']) {<br>
        戻る;<br>
    }<br>
<br>
    echo '<pre class="brush:php;toolbar:false">';<br>
    foreach(func_get_args() as $var)<br>
    var_dump($var);<br>
    echo '
';
}
関数fdebug()
{
    グローバル $config;
    if(!$config['debug']) {
        戻る;
    }
    foreach(func_get_args() as $var) {
        file_put_contents('./aaa_yii_debug.php', ''.PHP_EOL . PHP_EOL, FILE_APPEND);
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート