Il est possible en php d'ignorer certaines méthodes par l'interpréteur php? Je dois ignorer certaines méthodes ou fonctions si le projet est, par exemple, en mode release, et les exécuter si le projet est en mode debug.Ignorer les méthodes par l'interpréteur php
0
A
Répondre
0
Si vous parlez bien sur les méthodes (pas de fonctions) puis la solution est utilise 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
}
}
ensuite pour toutes les méthodes non déclarées implicitement de MyClass
, la méthode __call
surcharge sera appelée. Si vous faites:
$c = new MyClass();
$c->debug(1,2,3);
Ensuite, si $debugging
est vrai, est appelé le __real_debug
protégé.
BTW: l'exemple ci-dessus n'est pas limité à PHP 5.3. Cela fonctionne pour n'importe quelle version de PHP 5.x.
J'ai également pensé à cette solution, mais j'essayais d'éviter d'utiliser une instruction if chaque fois que je veux faire du débogage. – Madalina
Ensuite, utilisez différentes classes de base. Peut-être avoir un MyClassDebug et MyClassRelease et instancier en conséquence? Je ne vois pas d'autre solution, car #ifdefs (comme en C) n'est pas implémenté en PHP ... –