6

__LINE____FILE____FUNCTION____CLASS__などの PHP のマジック定数を使用するためのベスト プラクティスは何__METHOD__ですか?

たとえば、次のように SQL エラーを特定するために__LINE__ とを使用します。__CLASS__

$result = mysql_query($query)
or die("Error SQL line ".__LINE__ ." class ".__CLASS__." : ".mysql_error());

これは容認できる慣行ですか?

4

3 に答える 3

2

あなたが示す練習には2つの欠点があります。

  • エラーが発生したファイルを表示していません-これを有効にするには、クラスをファイルに1:1でマップする非常に厳密なファイル構造が必要です

  • __CLASS__エラーが継承されたクラスで発生した場合、間違った結果が表示されます。get_class($this)実際の現在のクラスを取得するために使用します。

それ以外は、これらの定数を使用してもまったく問題ありません。ご了承ください

  • __FUNCTION__PHP 4.3で__CLASS__追加されました。

  • __METHOD__PHP 5.0.0 以降で利用可能

  • __DIR____NAMESPACE__PHP 5.3 以降で利用可能です。

ドキュメント

于 2010-11-26T19:59:25.623 に答える
1

これらの定数の目的は、デバッグとロギングです。これはまさにあなたがしていることです。

__FILE__相対ファイル パス (例: ) にも使用できますdirname(__FILE__)

于 2010-11-26T16:26:57.073 に答える
1

私ができる唯一のアドバイスは、すべての魔法の定数が定義されているわけではないということです。したがって、疑わしい場合は、使用してくださいif(defined('__MAGIC_CONSTANT__'))

于 2010-11-26T16:40:06.253 に答える