0
によってメソッドを無視することは、PHPインタプリタによっていくつかのメソッドを無視するPHPで可能ですか?プロジェクトがリリースモードなどであれば、いくつかのメソッドや関数を無視し、プロジェクトがデバッグモードの場合はそれらを実行する必要があります。は、PHPの通訳
によってメソッドを無視することは、PHPインタプリタによっていくつかのメソッドを無視するPHPで可能ですか?プロジェクトがリリースモードなどであれば、いくつかのメソッドや関数を無視し、プロジェクトがデバッグモードの場合はそれらを実行する必要があります。は、PHPの通訳
あなたは、確かな方法(ない機能)の話をしている場合、そのソリューションはOverloadingを使用している:
class MyClass
{
static public $debugging = true;
public function __call($function, $arguments)
{
if (!self::$debugging)
trigger_error("Cannot call $function in release mode!", E_USER_ERROR);
return call_user_func_array(array($this,'__real_'.$function), $arguments);
}
protected function __real_debug($a,$b,$c)
{
// Do something here
}
}
その後MyClass
のすべての暗黙的に宣言されていない方法のために、オーバーロードさ__call
メソッドが呼び出されます。そうした場合:$debugging
がtrueの場合
$c = new MyClass();
$c->debug(1,2,3);
その後、保護__real_debug
が呼び出されます。
はところで:上記のサンプルは、PHP 5.3に限定されるものではありません。これはPHP 5.xバージョンで動作します。
は、私はまた、このソリューションについて考えたが、私はいくつかのデバッグのものをしたいif文毎回の使用を回避しようとしていました。 – Madalina
次に、異なる基本クラスを使用します。おそらくMyClassDebugとMyClassReleaseを持っていて、それに応じてインスタンス化しますか? (Cのように)#ifdefsはPHPで実装されていないので、私は、他のソリューションを参照してくださいません... –