Как и другие предлагали, используйте класс ReflectionFunction.
<?php
function foo($bar, $baz) {
$refFunc = new ReflectionFunction(__FUNCTION__);
if(func_num_args() > $refFunc->getNumberOfParameters())
throw new Exception('Too many arguments.');
}
foo(1,2,3);
Будет сгенерировано исключение.
Или проще. Поместите это в начало функции:
function bar($baz, $bat) {
if(func_num_args()>count(get_defined_vars()))
throw new Exception('Too many args.');
}
bar(1,2,3);
Будет выброшено исключение.