Non. Comme déjà indiqué ailleurs, new
est un mot-clé réservé. Essayer de l'utiliser comme un nom de méthode entraînera une erreur d'analyse: "erreur de syntaxe, inattendue T_NEW
, attendez T_STRING
". Les espaces de noms n'aideront pas, car le mot clé new
s'applique à n'importe quel espace de noms. La seule façon de contourner cela serait au moyen d'une méthode virtuelle, par ex.
/**
* @method String new new($args) returns $args
*/
class Foo
{
protected function _new($args)
{
return $args;
}
public function __call($method, $args)
{
if($method === 'new') {
return call_user_func_array(array($this, '_new'), $args);
} else {
throw new LogicException('Unknown method');
}
}
}
$foo = new Foo;
echo $foo->new('hello'); // return hello
echo $foo->boo(); // throws Exception
Mais je déconseillerais cela. Toutes les méthodes magiques sont plus lentes que l'invocation directe des méthodes et si la règle simple est qu'il n'y a pas de nom de méthode new
, alors soyez le. Utilisez un synonyme.
@new Est-ce que() pour vous? –