[DOC-CVS] [doc-en] master: Document get_error_handler(), get_exception_handler() (#4567)
[email protected] (Arnaud Le Blanc via GitHub)
| Newsgroups | php.doc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: Arnaud Le Blanc (arnaud-lb)
Committer: GitHub (web-flow)
Pusher: arnaud-lb
Date: 2025-04-21T13:15:50+02:00
Commit: https://github.com/php/doc-en/commit/4a6671fe697ead5b27603b56face01a2c4e7ebe5
Raw diff: https://github.com/php/doc-en/commit/4a6671fe697ead5b27603b56face01a2c4e7ebe5.diff
Document get_error_handler(), get_exception_handler() (#4567)
RFC: https://wiki.php.net/rfc/get-error-exception-handler
Changed paths:
A reference/errorfunc/functions/get-error-handler.xml
A reference/errorfunc/functions/get-exception-handler.xml
M reference/errorfunc/functions/restore-error-handler.xml
M reference/errorfunc/functions/restore-exception-handler.xml
M reference/errorfunc/functions/set-error-handler.xml
M reference/errorfunc/functions/set-exception-handler.xml
M reference/errorfunc/versions.xml
Diff:
diff --git a/reference/errorfunc/functions/get-error-handler.xml b/reference/errorfunc/functions/get-error-handler.xml
new file mode 100644
index 000000000000..86a47b91c602
--- /dev/null
+++ b/reference/errorfunc/functions/get-error-handler.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.get-error-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <refnamediv>
+ <refname>get_error_handler</refname>
+ <refpurpose>Gets the user-defined error handler function</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+ &reftitle.description;
+ <methodsynopsis>
+ <type class="union"><type>callable</type><type>null</type></type><methodname>get_error_handler</methodname>
+ <void/>
+ </methodsynopsis>
+ <simpara>
+ Returns the current error handler function, if any.
+ </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+ &reftitle.parameters;
+ &no.function.parameters;
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+ &reftitle.returnvalues;
+ <simpara>
+ Returns the currently defined error handler (if any).
+ If the built-in error handler is used &null; is returned.
+ </simpara>
+ <simpara>
+ The returned handler is the exact callable value that was passed to
+ <function>set_error_handler</function> to define it.
+ </simpara>
+ </refsect1>
+
+ <refsect1 role="examples">
+ &reftitle.examples;
+ <para>
+ <example>
+ <title><function>get_error_handler</function> example</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+$handler = function (int $errno, string $errstr, ?string $errfile, ?int $errline) {
+ echo "Error: " . $errstr . "\n";
+};
+
+var_dump(get_error_handler()); // NULL
+
+set_error_handler($handler);
+
+var_dump(get_error_handler() === $handler); // bool(true)
+
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+ &reftitle.notes;
+ <tip>
+ <simpara>
+ Prior to PHP 8.5.0, this functionality can be provided by the following
+ polyfill:
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+if (!function_exists('get_error_handler')) {
+ function noop_error_handler() {
+ }
+ function get_error_handler(): ?callable {
+ $handler = set_error_handler('noop_error_handler');
+ restore_error_handler();
+ return $handler;
+ }
+}
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </tip>
+ </refsect1>
+
+ <refsect1 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><function>error_reporting</function></member>
+ <member><function>set_error_handler</function></member>
+ <member><function>restore_error_handler</function></member>
+ <member><function>trigger_error</function></member>
+ <member><link linkend="errorfunc.constants">error level constants</link></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
+-->
diff --git a/reference/errorfunc/functions/get-exception-handler.xml b/reference/errorfunc/functions/get-exception-handler.xml
new file mode 100644
index 000000000000..64e0adc74375
--- /dev/null
+++ b/reference/errorfunc/functions/get-exception-handler.xml
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<refentry xml:id="function.get-exception-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <refnamediv>
+ <refname>get_exception_handler</refname>
+ <refpurpose>Gets the user-defined exception handler function</refpurpose>
+ </refnamediv>
+
+ <refsect1 role="description">
+ &reftitle.description;
+ <methodsynopsis>
+ <type class="union"><type>callable</type><type>null</type></type><methodname>get_exception_handler</methodname>
+ <void/>
+ </methodsynopsis>
+ <simpara>
+ Returns the current exception handler function, if any.
+ </simpara>
+ </refsect1>
+
+ <refsect1 role="parameters">
+ &reftitle.parameters;
+ &no.function.parameters;
+ </refsect1>
+
+ <refsect1 role="returnvalues">
+ &reftitle.returnvalues;
+ <simpara>
+ Returns the currently defined exception handler.
+ If no handler is defined, &null; is returned.
+ </simpara>
+ <simpara>
+ The returned handler is the exact callable value that was passed to
+ <function>set_exception_handler</function> to define it.
+ </simpara>
+ </refsect1>
+
+ <refsect1 role="examples">
+ &reftitle.examples;
+ <para>
+ <example>
+ <title><function>get_exception_handler</function> example</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+
+$handler = function (Throwable $ex) {
+ echo "Exception: " . $ex::class . ": " . $ex->getMessage() . "\n";
+};
+
+var_dump(get_exception_handler()); // NULL
+
+set_exception_handler($handler);
+
+var_dump(get_exception_handler() === $handler); // bool(true)
+
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </refsect1>
+
+ <refsect1 role="notes">
+ &reftitle.notes;
+ <tip>
+ <simpara>
+ Prior to PHP 8.5.0, this functionality can be provided by the following
+ polyfill:
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
+<![CDATA[
+<?php
+if (!function_exists('get_exception_handler')) {
+ function noop_exception_handler() {
+ }
+ function get_exception_handler(): ?callable {
+ $handler = set_exception_handler('noop_exception_handler');
+ restore_exception_handler();
+ return $handler;
+ }
+}
+?>
+]]>
+ </programlisting>
+ </informalexample>
+ </tip>
+ </refsect1>
+
+ <refsect1 role="seealso">
+ &reftitle.seealso;
+ <para>
+ <simplelist>
+ <member><function>set_exception_handler</function></member>
+ <member><function>restore_exception_handler</function></member>
+ <member><function>restore_error_handler</function></member>
+ <member><function>error_reporting</function></member>
+ <member><link linkend="language.exceptions">Exceptions</link></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
+-->
diff --git a/reference/errorfunc/functions/restore-error-handler.xml b/reference/errorfunc/functions/restore-error-handler.xml
index 45f3333c5595..31cbc6c532bb 100644
--- a/reference/errorfunc/functions/restore-error-handler.xml
+++ b/reference/errorfunc/functions/restore-error-handler.xml
@@ -71,6 +71,7 @@ Invalid serialized value.
<simplelist>
<member><function>error_reporting</function></member>
<member><function>set_error_handler</function></member>
+ <member><function>get_error_handler</function></member>
<member><function>restore_exception_handler</function></member>
<member><function>trigger_error</function></member>
</simplelist>
diff --git a/reference/errorfunc/functions/restore-exception-handler.xml b/reference/errorfunc/functions/restore-exception-handler.xml
index 474215e7d00f..0ccf779c33a0 100644
--- a/reference/errorfunc/functions/restore-exception-handler.xml
+++ b/reference/errorfunc/functions/restore-exception-handler.xml
@@ -76,6 +76,7 @@
<para>
<simplelist>
<member><function>set_exception_handler</function></member>
+ <member><function>get_exception_handler</function></member>
<member><function>set_error_handler</function></member>
<member><function>restore_error_handler</function></member>
<member><function>error_reporting</function></member>
diff --git a/reference/errorfunc/functions/set-error-handler.xml b/reference/errorfunc/functions/set-error-handler.xml
index 162d12321cb0..35b2220cae41 100644
--- a/reference/errorfunc/functions/set-error-handler.xml
+++ b/reference/errorfunc/functions/set-error-handler.xml
@@ -345,6 +345,7 @@ Aborting...<br />
<member><classname>ErrorException</classname></member>
<member><function>error_reporting</function></member>
<member><function>restore_error_handler</function></member>
+ <member><function>get_error_handler</function></member>
<member><function>trigger_error</function></member>
<member><link linkend="errorfunc.constants">error level constants</link></member>
</simplelist>
diff --git a/reference/errorfunc/functions/set-exception-handler.xml b/reference/errorfunc/functions/set-exception-handler.xml
index ed5ec4753337..ce282ee63515 100644
--- a/reference/errorfunc/functions/set-exception-handler.xml
+++ b/reference/errorfunc/functions/set-exception-handler.xml
@@ -86,6 +86,7 @@ echo "Not Executed\n";
&reftitle.seealso;
<para>
<simplelist>
+ <member><function>get_exception_handler</function></member>
<member><function>restore_exception_handler</function></member>
<member><function>restore_error_handler</function></member>
<member><function>error_reporting</function></member>
diff --git a/reference/errorfunc/versions.xml b/reference/errorfunc/versions.xml
index 70cddabaea2e..ef101ebacc0a 100644
--- a/reference/errorfunc/versions.xml
+++ b/reference/errorfunc/versions.xml
@@ -11,6 +11,8 @@
<function name="error_clear_last" from="PHP 7, PHP 8"/>
<function name="error_log" from="PHP 4, PHP 5, PHP 7, PHP 8"/>
<function name="error_reporting" from="PHP 4, PHP 5, PHP 7, PHP 8"/>
+ <function name="get_error_handler" from="PHP 8 >= 8.5.0"/>
+ <function name="get_exception_handler" from="PHP 8 >= 8.5.0"/>
<function name="restore_error_handler" from="PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8"/>
<function name="restore_exception_handler" from="PHP 5, PHP 7, PHP 8"/>
<function name="set_error_handler" from="PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8"/>