XSLTProcessor::registerPHPFunctionNS

Register a PHP function as namespaced XSLT function

&reftitle.description; public `void` `XSLTProcessor::registerPHPFunctionNS` `string` `namespaceURI` `string` `name` `callable` `callable`

This method enables the ability to use a PHP function as a namespaced XSLT functions within XSL stylesheets.

&reftitle.parameters;

`namespaceURI`

- The URI of the namespace.

`name`

- The local function name inside the namespace.

`callable`

- The PHP function to call when the XSL function gets called within the stylesheet. When a node list is passed as parameter to the callback, the argument becomes an array containing the matched dom nodes.

&reftitle.returnvalues;

&return.void;

&reftitle.examples;

### Simple PHP Function call from a stylesheet

    <?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:my="urn:my.ns">
    <xsl:output method="html" encoding="utf-8" indent="yes"/>
    <xsl:template match="allusers">
     <html><body>
       <h2><xsl:value-of select="my:count(user/uid)" /> users</h2>
       <table>
       <xsl:for-each select="user">
         <tr>
          <td>
           <xsl:value-of select="my:uppercase(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->registerPHPFunctionNS('urn:my.ns', 'uppercase', strtoupper(...));
    $proc->registerPHPFunctionNS('urn:my.ns', 'count', fn (array $arg1) => count($arg1));
    $proc->importStyleSheet($xsldoc);
    echo $proc->transformToXML($xmldoc);
    ?>

&reftitle.seealso;

- `DOMXPath::registerPhpFunctionNS`
- `DOMXPath::registerPhpFunctions`
- `XSLTProcessor::registerPhpFunctions`