Разрешает вызывать PHP-функции как XSLT-функции

# XSLTProcessor::registerPHPFunctions

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

XSLTProcessor::registerPHPFunctions — Разрешает вызывать PHP-функции как XSLT-функции

### Описание

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

Метод разрешает вызывать PHP-функции как XSLT-функции в таблицах стилей в формате XSL.

### Список параметров

`functions`

  Параметр разрешает вызывать из XSLT-структуры только конкретные функции.

  Параметр принимает значения следующих типов: string — название функции, array — индексный массив с названиями функций или array — ассоциативный массив с названиями функций в ключах и callable-выражениями в значениях.

### Ошибки

- Метод выбрасывает ошибку ValueError, если название callback-функции недопустимо.
- Метод выбрасывает ошибку ValueError, если аргумент `options` содержит недопустимые параметры.
- Метод выбрасывает ошибку ValueError, если в аргументе `overrideEncoding` передали неизвестную кодировку.
- Метод выбрасывает ошибку TypeError, если значение для обратного вызова не принадлежит типу callable.

### Возвращаемые значения

Функция не возвращает значения после выполнения.

### Список изменений

Версия | Описание
--- | ---
8.4.0 | При передаче недопустимых названий callback-функций метод теперь выбрасывает ошибку ValueError. При передаче значений, которые не принадлежат типу callable, метод теперь выбрасывает ошибку TypeError.
8.4.0 | Параметр `functions` теперь принимает callable-выражения, когда набор callback-функций, доступных для вызова из XSLT-структур, ограничивают путём передачи массива (array).

### Примеры

Пример #1 Пример простого вызова PHP-функции из таблицы стилей

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

    ?>

### Смотрите также

- DOMXPath::registerPhpFunctions() - Регистрирует PHP-функции как XPath-функции

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open