Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用xslt-PHP选择函数寄存器_Php_Xml_Xslt - Fatal编程技术网

用xslt-PHP选择函数寄存器

用xslt-PHP选择函数寄存器,php,xml,xslt,Php,Xml,Xslt,我有一个只由静态方法组成的类。我想注册这个类,以便XSLT引擎可以使用它。据我所知,要么注册所有类和函数,除非传递第一个参数$restrict,并且第一个参数只接受字符串或数组中的方法名。如何将整个类注册到XSLT,以便可以从XSLT页面访问一个类的所有静态方法。假设您有一个名为Foo的类,您可以使用如下代码获得所有类方法的数组: function addClassPrefix($name) { return "Foo::$name"; } $names = array_map("addCl

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

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

function addClassPrefix($name) {
  return "Foo::$name";
}
$names = array_map("addClassPrefix", get_class_methods("Foo"));
$proc = new XSLTProcessor();
$proc->registerPHPFunctions($names);
请注意,需要在每个方法名称前面添加类名作为前缀

然后,您可以像这样简单地注册整个阵列:

function addClassPrefix($name) {
  return "Foo::$name";
}
$names = array_map("addClassPrefix", get_class_methods("Foo"));
$proc = new XSLTProcessor();
$proc->registerPHPFunctions($names);