我想确定内部PHP函数的可选参数的默认设置。作为htmlspecialchars函数的一个示例。我的第一次尝试:
$rf = new ReflectionFunction('htmlspecialchars');
$parameters = $rf->getParameters();
//1 => ReflectionParameter::__set_state(array('name' => "quote_style",)),
$defaultFlags = $parameters[1]->getDefaultValue();
//Fatal error: Uncaught ReflectionException:
// Cannot determine default value for internal functions
我希望结果是专门为htmlspecialchars一个整数。ENT_COMPAT为2,ENT_QUOTES|ENT_SUBSTITUTE|ENT_HTML401(PHP8.1(为11。我希望避免使用基于PHP版本的区分大小写的解决方案。
您的代码在PHP 8.0和8.1 上运行良好
请注意,它旨在为8.0 之前的任何PHP版本的文档中所述的内置函数抛出错误
您可以在此之前调用isDefaultValueAvailable
以避免抛出错误(或在try-catch块中换行(:
$rf = new ReflectionFunction('htmlspecialchars');
$parameters = $rf->getParameters();
$defaultFlags = $parameters[1]->isDefaultValueAvailable()
? $parameters[1]->getDefaultValue()
: null;
var_dump($defaultFlags);
示例