Некоторое время назад я читал что-то об уродливом хакере, который поймал фатальные ошибки и попытался включить и выполнить отсутствующие функции, но я определенно не пошел бы по этому пути.есть __call()
магический метод , который является своего рода __autoload()
для методов, а не функций.Это может быть достаточно для ваших нужд;если вы можете позволить себе вызывать класс и требовать каждую отдельную функцию отдельно.Начиная с PHP 5.3.0, у вас также есть __callStatic()
.
Пример использования __callStatic()
:
class Test
{
public function __callStatic($m, $args)
{
if (function_exists($m) !== true)
{
if (is_file('./path/to/functions/' . $m . '.php') !== true)
{
return false;
}
require('./path/to/functions/' . $m . '.php');
}
return call_user_func_array($m, $args);
}
}
Test::functionToLoad(1, 2, 3);
Это вызовет функцию functionToLoad()
, определенную в ./path/to/functions/functionToLoad.php.