Магическая функция __call () в php используется в классах. Есть ли какая-либо подобная магическая функция, кроме функций? Подобно __autoload () для функций.
Например, что-то вроде этого
function __call($name, $arguments) { echo "Function $name says {$arguments[0]} "; } random_func("hello");
Нет, я не думаю, что такая магическая функция существует.
Одним из обходных путей для этого было бы включение ваших функций в статический класс и добавление к этому классу магического метода __callStatic
(только для PHP 5.3):
class Func { /** As of PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } } Func::random_func("hello!");
Для PHP <5.3 вы можете сделать то же самое, но вам нужно создать экземпляр объекта и использовать метод __call
magic.
$Func = new Func; $Func->random_func("hello!");
Нет. Вызов функции, которая не существует, всегда приведет к ошибке FATAL.
** Возможно, расширение zend может перехватить это с помощью fcall_begin_handler
, но я не уверен.