[php]

<?php

class TestClass extends TestClassBase {

private $name = 'name';



public function __call($method, $arguments)

{

    echo 'method: '.$method.PHP_EOL;

    return $this->$method($this->name);

}

}

class TestClassBase {

protected function getName($name) {

    echo $name.PHP_EOL;

}



/*

protected function getUndefined($name) {

    echo $name.PHP_EOL;

}

*/

}

$tc = new TestClass();

//echo $tc->getName('testname');

echo $tc->getUndefined();

[/php]

Выше происходит следующее: вызываем метод, которого нет ни в классе TestClass, ни в его родителе. Поскольку __call перехватывает такие вызовы, в нем снова $this->$method, то так продолжается до тех пор, пока не будет превышена PHP-константа ограничения вызовов метода.