Stack Overflow からの転載です。
マジックメソッド__call()
をオーバーライドし、call_user_func_array()
で実際には予約語となる関数を呼び出す事で実現出来ます。
詳細はコードで。
引用元
namespaces - Is it possible to use new as a method name in PHP 5.3? - Stack Overflow
コード (引用元から転載)
/**
* @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