Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.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
Php 创建具有多个属性的节点_Php_Dom_Xpath - Fatal编程技术网

Php 创建具有多个属性的节点

Php 创建具有多个属性的节点,php,dom,xpath,Php,Dom,Xpath,我想创建一个节点脚本并将其设置为多个属性 这就是我想要做的: $script_insta_node = $dom->createElement('script'); $script_insta_node->setAttribute('async defer src', $instagram_js_path); 问题是我只能定义一个属性。您可以做的是扩展(定义属性mutator方法的类),然后将它们注册到 如果您想变得更花哨一点,您还可以扩展DOMDocument,以在默认情况下合并

我想创建一个节点脚本并将其设置为多个属性

这就是我想要做的:

$script_insta_node = $dom->createElement('script');
$script_insta_node->setAttribute('async defer src', $instagram_js_path);

问题是我只能定义一个属性。

您可以做的是扩展(定义属性mutator方法的类),然后将它们注册到

如果您想变得更花哨一点,您还可以扩展
DOMDocument
,以在默认情况下合并此行为,例如在您自己的名称空间
Dom

Dom\Element

名称空间Dom;
类元素
扩展\d元素
{
//我想这样的事情会让你
//比你原来的例子更有意义
//这可能会将所有属性设置为相同的值
公共函数setAttributes(数组$attributes){
foreach($name=>$value的属性){
$this->setAttribute($name,$value);
}
}
}
Dom\Document

名称空间Dom;
类文档
扩展\DOMDocument
{
公共函数构造($version='1.0',$encoding=null){
父项::__构造($version,$encoding);
//我们注册我们的自定义DomeElement类
//可以对所有DOM类执行此操作
//它们是DOMNode的导数
$this->registerNodeClass('DomeElement','Dom\Element');
}
}
用法示例:

$doc=newdom\Document;
$scriptElement=$doc->createElement('script');
$scriptElement->setAttributes(数组(
'延迟'=>'',
'异步'=>'',
'src'=>instagram\u js\u路径
) );

是什么阻止您定义接受变量并对其执行所需调用的自定义函数?