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
에 해당하는 경우
$c = new MyClass();
$c->debug(1,2,3);
그런 다음, 보호 __real_debug
가 호출됩니다.
BTW : 위의 샘플은 PHP 5.3에 국한되지 않습니다. PHP 5.x 버전에서 작동합니다.
이 솔루션에 대해서도 생각했지만 디버깅 작업을 할 때마다 if 문을 사용하지 않으려 고했습니다. – Madalina
그런 다음 다른 기본 클래스를 사용하십시오. 어쩌면 MyClassDebug 및 MyClassRelease가 있고 이에 따라 인스턴스화 할 수 있습니까? #ifdefs (C와 유사)가 PHP에서 구현되지 않았으므로 다른 해결책은 없습니다 ... –