Skip to content

Commit 4a6671f

Browse files
authored
Document get_error_handler(), get_exception_handler() (php#4567)
RFC: https://wiki.php.net/rfc/get-error-exception-handler
1 parent a87dfa3 commit 4a6671f

7 files changed

+248
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<refentry xml:id="function.get-error-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
3+
<refnamediv>
4+
<refname>get_error_handler</refname>
5+
<refpurpose>Gets the user-defined error handler function</refpurpose>
6+
</refnamediv>
7+
8+
<refsect1 role="description">
9+
&reftitle.description;
10+
<methodsynopsis>
11+
<type class="union"><type>callable</type><type>null</type></type><methodname>get_error_handler</methodname>
12+
<void/>
13+
</methodsynopsis>
14+
<simpara>
15+
Returns the current error handler function, if any.
16+
</simpara>
17+
</refsect1>
18+
19+
<refsect1 role="parameters">
20+
&reftitle.parameters;
21+
&no.function.parameters;
22+
</refsect1>
23+
24+
<refsect1 role="returnvalues">
25+
&reftitle.returnvalues;
26+
<simpara>
27+
Returns the currently defined error handler (if any).
28+
If the built-in error handler is used &null; is returned.
29+
</simpara>
30+
<simpara>
31+
The returned handler is the exact callable value that was passed to
32+
<function>set_error_handler</function> to define it.
33+
</simpara>
34+
</refsect1>
35+
36+
<refsect1 role="examples">
37+
&reftitle.examples;
38+
<para>
39+
<example>
40+
<title><function>get_error_handler</function> example</title>
41+
<programlisting role="php">
42+
<![CDATA[
43+
<?php
44+
45+
$handler = function (int $errno, string $errstr, ?string $errfile, ?int $errline) {
46+
echo "Error: " . $errstr . "\n";
47+
};
48+
49+
var_dump(get_error_handler()); // NULL
50+
51+
set_error_handler($handler);
52+
53+
var_dump(get_error_handler() === $handler); // bool(true)
54+
55+
?>
56+
]]>
57+
</programlisting>
58+
</example>
59+
</para>
60+
</refsect1>
61+
62+
<refsect1 role="notes">
63+
&reftitle.notes;
64+
<tip>
65+
<simpara>
66+
Prior to PHP 8.5.0, this functionality can be provided by the following
67+
polyfill:
68+
</simpara>
69+
<informalexample>
70+
<programlisting role="php">
71+
<![CDATA[
72+
<?php
73+
if (!function_exists('get_error_handler')) {
74+
function noop_error_handler() {
75+
}
76+
function get_error_handler(): ?callable {
77+
$handler = set_error_handler('noop_error_handler');
78+
restore_error_handler();
79+
return $handler;
80+
}
81+
}
82+
?>
83+
]]>
84+
</programlisting>
85+
</informalexample>
86+
</tip>
87+
</refsect1>
88+
89+
<refsect1 role="seealso">
90+
&reftitle.seealso;
91+
<para>
92+
<simplelist>
93+
<member><function>error_reporting</function></member>
94+
<member><function>set_error_handler</function></member>
95+
<member><function>restore_error_handler</function></member>
96+
<member><function>trigger_error</function></member>
97+
<member><link linkend="errorfunc.constants">error level constants</link></member>
98+
</simplelist>
99+
</para>
100+
</refsect1>
101+
</refentry>
102+
<!-- Keep this comment at the end of the file
103+
Local variables:
104+
mode: sgml
105+
sgml-omittag:t
106+
sgml-shorttag:t
107+
sgml-minimize-attributes:nil
108+
sgml-always-quote-attributes:t
109+
sgml-indent-step:1
110+
sgml-indent-data:t
111+
indent-tabs-mode:nil
112+
sgml-parent-document:nil
113+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
114+
sgml-exposed-tags:nil
115+
sgml-local-catalogs:nil
116+
sgml-local-ecat-files:nil
117+
End:
118+
vim600: syn=xml fen fdm=syntax fdl=2 si
119+
vim: et tw=78 syn=sgml
120+
vi: ts=1 sw=1
121+
-->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<refentry xml:id="function.get-exception-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
3+
<refnamediv>
4+
<refname>get_exception_handler</refname>
5+
<refpurpose>Gets the user-defined exception handler function</refpurpose>
6+
</refnamediv>
7+
8+
<refsect1 role="description">
9+
&reftitle.description;
10+
<methodsynopsis>
11+
<type class="union"><type>callable</type><type>null</type></type><methodname>get_exception_handler</methodname>
12+
<void/>
13+
</methodsynopsis>
14+
<simpara>
15+
Returns the current exception handler function, if any.
16+
</simpara>
17+
</refsect1>
18+
19+
<refsect1 role="parameters">
20+
&reftitle.parameters;
21+
&no.function.parameters;
22+
</refsect1>
23+
24+
<refsect1 role="returnvalues">
25+
&reftitle.returnvalues;
26+
<simpara>
27+
Returns the currently defined exception handler.
28+
If no handler is defined, &null; is returned.
29+
</simpara>
30+
<simpara>
31+
The returned handler is the exact callable value that was passed to
32+
<function>set_exception_handler</function> to define it.
33+
</simpara>
34+
</refsect1>
35+
36+
<refsect1 role="examples">
37+
&reftitle.examples;
38+
<para>
39+
<example>
40+
<title><function>get_exception_handler</function> example</title>
41+
<programlisting role="php">
42+
<![CDATA[
43+
<?php
44+
45+
$handler = function (Throwable $ex) {
46+
echo "Exception: " . $ex::class . ": " . $ex->getMessage() . "\n";
47+
};
48+
49+
var_dump(get_exception_handler()); // NULL
50+
51+
set_exception_handler($handler);
52+
53+
var_dump(get_exception_handler() === $handler); // bool(true)
54+
55+
?>
56+
]]>
57+
</programlisting>
58+
</example>
59+
</para>
60+
</refsect1>
61+
62+
<refsect1 role="notes">
63+
&reftitle.notes;
64+
<tip>
65+
<simpara>
66+
Prior to PHP 8.5.0, this functionality can be provided by the following
67+
polyfill:
68+
</simpara>
69+
<informalexample>
70+
<programlisting role="php">
71+
<![CDATA[
72+
<?php
73+
if (!function_exists('get_exception_handler')) {
74+
function noop_exception_handler() {
75+
}
76+
function get_exception_handler(): ?callable {
77+
$handler = set_exception_handler('noop_exception_handler');
78+
restore_exception_handler();
79+
return $handler;
80+
}
81+
}
82+
?>
83+
]]>
84+
</programlisting>
85+
</informalexample>
86+
</tip>
87+
</refsect1>
88+
89+
<refsect1 role="seealso">
90+
&reftitle.seealso;
91+
<para>
92+
<simplelist>
93+
<member><function>set_exception_handler</function></member>
94+
<member><function>restore_exception_handler</function></member>
95+
<member><function>restore_error_handler</function></member>
96+
<member><function>error_reporting</function></member>
97+
<member><link linkend="language.exceptions">Exceptions</link></member>
98+
</simplelist>
99+
</para>
100+
</refsect1>
101+
</refentry>
102+
<!-- Keep this comment at the end of the file
103+
Local variables:
104+
mode: sgml
105+
sgml-omittag:t
106+
sgml-shorttag:t
107+
sgml-minimize-attributes:nil
108+
sgml-always-quote-attributes:t
109+
sgml-indent-step:1
110+
sgml-indent-data:t
111+
indent-tabs-mode:nil
112+
sgml-parent-document:nil
113+
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
114+
sgml-exposed-tags:nil
115+
sgml-local-catalogs:nil
116+
sgml-local-ecat-files:nil
117+
End:
118+
vim600: syn=xml fen fdm=syntax fdl=2 si
119+
vim: et tw=78 syn=sgml
120+
vi: ts=1 sw=1
121+
-->

reference/errorfunc/functions/restore-error-handler.xml

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ Invalid serialized value.
7171
<simplelist>
7272
<member><function>error_reporting</function></member>
7373
<member><function>set_error_handler</function></member>
74+
<member><function>get_error_handler</function></member>
7475
<member><function>restore_exception_handler</function></member>
7576
<member><function>trigger_error</function></member>
7677
</simplelist>

reference/errorfunc/functions/restore-exception-handler.xml

+1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
<para>
7777
<simplelist>
7878
<member><function>set_exception_handler</function></member>
79+
<member><function>get_exception_handler</function></member>
7980
<member><function>set_error_handler</function></member>
8081
<member><function>restore_error_handler</function></member>
8182
<member><function>error_reporting</function></member>

reference/errorfunc/functions/set-error-handler.xml

+1
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,7 @@ Aborting...<br />
345345
<member><classname>ErrorException</classname></member>
346346
<member><function>error_reporting</function></member>
347347
<member><function>restore_error_handler</function></member>
348+
<member><function>get_error_handler</function></member>
348349
<member><function>trigger_error</function></member>
349350
<member><link linkend="errorfunc.constants">error level constants</link></member>
350351
</simplelist>

reference/errorfunc/functions/set-exception-handler.xml

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ echo "Not Executed\n";
8686
&reftitle.seealso;
8787
<para>
8888
<simplelist>
89+
<member><function>get_exception_handler</function></member>
8990
<member><function>restore_exception_handler</function></member>
9091
<member><function>restore_error_handler</function></member>
9192
<member><function>error_reporting</function></member>

reference/errorfunc/versions.xml

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<function name="error_clear_last" from="PHP 7, PHP 8"/>
1212
<function name="error_log" from="PHP 4, PHP 5, PHP 7, PHP 8"/>
1313
<function name="error_reporting" from="PHP 4, PHP 5, PHP 7, PHP 8"/>
14+
<function name="get_error_handler" from="PHP 8 &gt;= 8.5.0"/>
15+
<function name="get_exception_handler" from="PHP 8 &gt;= 8.5.0"/>
1416
<function name="restore_error_handler" from="PHP 4 &gt;= 4.0.1, PHP 5, PHP 7, PHP 8"/>
1517
<function name="restore_exception_handler" from="PHP 5, PHP 7, PHP 8"/>
1618
<function name="set_error_handler" from="PHP 4 &gt;= 4.0.1, PHP 5, PHP 7, PHP 8"/>

0 commit comments

Comments
 (0)