Selon le manuel PHP, ces deux paramètres ont été ajoutés dans PHP version 5.2. Le changelog officiel de PHP 5 ne note pas explicitement ces changements mais the PHP 5.2 update readme has these.
ensuite regarder dans la source 5.2 pour le constructeur (in lxr), il montre que cela est lié à l'itérateur:
sxe->iter.nsprefix = ns_len ? xmlStrdup((xmlChar *)ns) : NULL;
sxe->iter.isprefix = isprefix;
Je suppose que ces deux spécifient l'espace de noms XML qui SimpleXMLElement
va itérer sur par défaut. Un petit test peut vérifier ceci:
$xml = new SimpleXMLElement(
'<root><a/><b/><c/></root>'
);
var_dump(count(iterator_to_array($xml))); #int(3)
Par défaut, l'itérateur a trois éléments ici: a, b et c. la mise en maintenant les paramètres spécifiant l'itération d'être sur une autre XML Namespace que celui par défaut change ceci:
$xml = new SimpleXMLElement(
'<root><a/><b/><c/></root>', 0, FALSE, "ns:1"
);
var_dump(count(iterator_to_array($xml))); #int(0)
L'itération a maintenant zéro éléments parce que la racine élément n'a pas d'éléments enfant dans l'espace de noms d'URI ns:1
.
Modification de l'espace de noms de l'élément racine ns:1
sera à nouveau révéler trois éléments parce que maintenant ces trois enfants-éléments sont dans cet espace de noms, ils héritent de leurs parents:
$xml = new SimpleXMLElement(
'<root xmlns="ns:1"><a/><b/><c/></root>', 0, FALSE, "ns:1"
);
var_dump(count(iterator_to_array($xml))); #int(3)
comme si les enfants se sont dans l'espace de noms spécifié par cette paire de paramètres et via un préfixe sur ces éléments:
$xml = new SimpleXMLElement(
'<root xmlns:n="ns:1"><n:a/><n:b/><n:c/></root>', 0, FALSE, "ns:1"
);
var_dump(count(iterator_to_array($xml))); #int(3)
Vous feriez bien si vous mettez cette réponse dans les commentaires de php.net. Parce qu'il n'y a aucun moyen de le savoir. Ils n'ont rien écrit ... vraiment. –