使用xslt PHP进行选择性函数注册



我有一个类,它只由静态方法组成。我想注册这个类,以便XSLT引擎可以使用它。据我所知,XSLTProcessor::registerPHPFunctions()要么注册所有的类和函数,除非传递了第一个参数$restrict,并且第一个参数只采用字符串或数组中的方法名。如何将整个类注册到XSLT,以便可以从XSLT页面访问类的所有静态方法。

假设您有一个名为Foo的类,您可以使用以下代码获得所有类方法的数组:

function addClassPrefix($name) {
  return "Foo::$name";
}
$names = array_map("addClassPrefix", get_class_methods("Foo"));

请注意,需要在每个方法名称前面添加类名作为前缀。

然后,您可以简单地注册整个数组,如下所示:

$proc = new XSLTProcessor();
$proc->registerPHPFunctions($names);

最新更新