XSLTProcessor::registerPHPFunctions

(PHP 5 >= 5.0.4, PHP 7, PHP 8)

XSLTProcessor::registerPHPFunctionsActive l'utilisation de PHP dans les feuilles de styles XSLT

Description

public XSLTProcessor::registerPHPFunctions(array|string|null $functions = null): void

Cette méthode permet d'utiliser les fonctions PHP en tant que fonctions XSLT dans les feuilles de style XSL.

Liste de paramètres

functions

Utilisez ce paramètre pour restreindre les fonctions PHP accessibles depuis XSLT.

Ce paramètre peut être l'un des suivants : un string (nom d'une fonction), un array indexé contenant des noms de fonctions, ou un array associatif où les clés représentent le nom de la fonction et la valeur associée est un callable.

Erreurs / Exceptions

  • Lance une ValueError si le nom d'un callback n'est pas valide.
  • Lève une exception ValueError si options contient une option invalide.
  • Lève une exception ValueError si overrideEncoding utilise un encodage inconnu.
  • Lance une TypeError si un callback donné n'est pas appelable.

Valeurs de retour

Aucune valeur n'est retournée.

Historique

Version Description
8.4.0 Les noms de callback invalides lancent maintenant une ValueError. Passer une entrée non appelable lance maintenant une TypeError.
8.4.0 Il est désormais possible d'utiliser des callable comme callbacks lorsqu'on utilise functions avec des entrées de type array.

Exemples

Exemple #1 Appel d'une fonction PHP depuis une feuille de style

<?php
$xml
= <<<EOB
<allusers>
<user>
<uid>bob</uid>
</user>
<user>
<uid>joe</uid>
</user>
</allusers>
EOB;
$xsl = <<<EOB
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:php="http://php.net/xsl">
<xsl:output method="html" encoding="utf-8" indent="yes"/>
<xsl:template match="allusers">
<html><body>
<h2>Users</h2>
<table>
<xsl:for-each select="user">
<tr><td>
<xsl:value-of
select="php:function('ucfirst',string(uid))"/>
</td></tr>
</xsl:for-each>
</table>
</body></html>
</xsl:template>
</xsl:stylesheet>
EOB;
$xmldoc = new DOMDocument();
$xmldoc->loadXML($xml);
$xsldoc = new DOMDocument();
$xsldoc->loadXML($xsl);

$proc = new XSLTProcessor();
$proc->registerPHPFunctions();
$proc->importStyleSheet($xsldoc);
echo
$proc->transformToXML($xmldoc);
?>

Voir aussi