[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-константа ограничения вызовов метода.
Прошлые записи
- Jvm Internals - Перевод
- Мозг против живота или насколько трудно управлять своей жизнью
- Творческий отпуск
- Telegram бот на Rust, два, три и Raspberry Pi 2
- Мысли насчет ChatGPT
- Mashinka на Rust. Первые впечатления.
- Перевод - Почему бумага формата А4 имеет размер 297 мм на 210 мм?
- Эволюция веб-приложений. От раздачи статики до Serverless
- Эволюция веб-приложений. От статичного HTML до Single Page Application и Progressive Web Application
- Переезд в Калининград
- Была ли спецоперация на Украине неизбежна?