Ответ 1
Вы можете использовать reflection...
$r = new ReflectionMethod($className, $methodName);
$params = $r->getParameters();
foreach ($params as $param) {
//$param is an instance of ReflectionParameter
echo $param->getName();
echo $param->isOptional();
}