Нет, это невозможно сделать так, как вы могли бы ожидать.
Из manual
:
PHP не поддерживает перегрузку функций, а также невозможно отменить или переопределить ранее объявленные функции.
ОДНАКО, вы можете использовать runkit_function_redefine
и его кузенов, но это определенно не очень элегантно ...
Вы также можете использовать create_function
, чтобы сделать что-то вроде этого:
<?php
$func = create_function('$a,$b','return $a + $b;');
echo $func(3,5); // 8
$func = create_function('$a,$b','return $a * $b;');
echo $func(3,5); // 15
?>
Как и в случае с runkit, он не очень элегантен, но дает поведение, которое вы ищете.