mirror of
https://github.com/php/doc-en.git
synced 2026-03-23 23:32:18 +01:00
* Fix return type for 5 functions: bool -> true These functions always return true (or throw on error): - finfo_close (fileinfo) - ftp_set_option (ftp) - libxml_set_external_entity_loader (libxml) - shm_detach (shmop) - array_multisort (standard) * Add changelog entries for return type change bool -> true * Fix changelog version: use 8.5.0 instead of entity hardcoded to 8.2.0 The &return.type.true; entity is hardcoded with version 8.2.0, but all 5 functions changed their return type from bool to true in PHP 8.5. Replace the entity with manual changelog rows using the correct version.
186 lines
5.0 KiB
XML
186 lines
5.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<refentry xml:id="function.libxml-set-external-entity-loader" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<refnamediv>
|
|
<refname>libxml_set_external_entity_loader</refname>
|
|
<refpurpose>Changes the default external entity loader</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>true</type><methodname>libxml_set_external_entity_loader</methodname>
|
|
<methodparam><type class="union"><type>callable</type><type>null</type></type><parameter>resolver_function</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Changes the default external entity loader.
|
|
This can be used to suppress the expansion of arbitrary external entities to avoid XXE attacks,
|
|
even when <constant>LIBXML_NOENT</constant> has been set for the respective operation,
|
|
and is usually preferable over calling <function>libxml_disable_entity_loader</function>.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>resolver_function</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
A <type>callable</type> with the following signature:
|
|
<methodsynopsis>
|
|
<type class="union"><type>resource</type><type>string</type><type>null</type></type><methodname><replaceable>resolver</replaceable></methodname>
|
|
<methodparam><type class="union"><type>string</type><type>null</type></type><parameter>public_id</parameter></methodparam>
|
|
<methodparam><type>string</type><parameter>system_id</parameter></methodparam>
|
|
<methodparam><type>array</type><parameter>context</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>public_id</parameter></term>
|
|
<listitem>
|
|
<simpara>
|
|
The public ID.
|
|
</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>system_id</parameter></term>
|
|
<listitem>
|
|
<simpara>
|
|
The system ID.
|
|
</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>context</parameter></term>
|
|
<listitem>
|
|
<simpara>
|
|
An array with the four elements <literal>"directory"</literal>, <literal>"intSubName"</literal>,
|
|
<literal>"extSubURI"</literal> and <literal>"extSubSystem"</literal>.
|
|
</simpara>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
This callable should return a &resource;, a &string; from which a resource can be
|
|
opened. If &null; is returned, the entity reference resolution will fail.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
&return.true.always;
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="changelog">
|
|
&reftitle.changelog;
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>8.5.0</entry>
|
|
<entry>
|
|
The return type is &true; now; previously, it was <type>bool</type>.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title><function>libxml_set_external_entity_loader</function> example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$xml = <<<XML
|
|
<!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar">
|
|
<foo>bar</foo>
|
|
XML;
|
|
|
|
$dtd = <<<DTD
|
|
<!ELEMENT foo (#PCDATA)>
|
|
DTD;
|
|
|
|
libxml_set_external_entity_loader(
|
|
function ($public, $system, $context) use($dtd) {
|
|
var_dump($public);
|
|
var_dump($system);
|
|
var_dump($context);
|
|
$f = fopen("php://temp", "r+");
|
|
fwrite($f, $dtd);
|
|
rewind($f);
|
|
return $f;
|
|
}
|
|
);
|
|
|
|
$dd = new DOMDocument;
|
|
$r = $dd->loadXML($xml);
|
|
|
|
var_dump($dd->validate());
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen>
|
|
<![CDATA[
|
|
string(10) "-//FOO/BAR"
|
|
string(25) "http://example.com/foobar"
|
|
array(4) {
|
|
["directory"] => NULL
|
|
["intSubName"] => NULL
|
|
["extSubURI"] => NULL
|
|
["extSubSystem"] => NULL
|
|
}
|
|
bool(true)
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>libxml_disable_entity_loader</function></member>
|
|
<member><function>libxml_get_external_entity_loader</function></member>
|
|
</simplelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|