[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 &gt;= 8.5.0"/>
+ <function name="get_exception_handler" from="PHP 8 &gt;= 8.5.0"/>
  <function name="restore_error_handler" from="PHP 4 &gt;= 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 &gt;= 4.0.1, PHP 5, PHP 7, PHP 8"/>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.