XSLTProcessor::registerPHPFunctions

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

XSLTProcessor::registerPHPFunctionsHabilita o uso de funções do PHP como funções XSLT

Descrição

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

Este método habilita o uso de funções PHP como funções XSLT nas folhas de estilo XSL.

Parâmetros

functions

Use este parâmetro para permitir que apenas certas funções sejam chamadas a partir do XSLT.

Este parâmetro pode ser um dos seguintes: uma string (um nome de função), um array indexado de nomes de funções ou um array associativo com chaves nos nomes de funções e valores associados sendo do tipo callable.

Erros/Exceções

  • Lança uma exceção ValueError se um nome de chamada de retorno não for válido.
  • Lança uma exceção ValueError se options contiver uma opção inválida.
  • Lança uma exceção ValueError s overrideEncoding for uma codificação desconhecida.
  • Lança uma exceção TypeError se uma função de retorno informada não for chamável.

Valor Retornado

Nenhum valor é retornado.

Registro de Alterações

Versão Descrição
8.4.0 Nomes de retorno de chamada inválidos agora lançam uma exceção ValueError. Passar uma entrada que não pode ser chamada agora lança uma exceção TypeError.
8.4.0 Agora é possível usar callables para funções de retorno ao usar functions com entradas de array.

Exemplos

Exemplo #1 Simples chamada de função do PHP a partir de uma folha de estilos

<?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);
?>

Veja Também