1
0
mirror of https://github.com/php/doc-en.git synced 2026-03-23 23:32:18 +01:00
Files
archived-doc-en/language/types/never.xml
George Peter Banyard 161dde4fe7 Rewrite type section (#1726)
This commit rewrites the whole type section to (hopefully) be better structured and future proof for further additions to the type system.

* Each type now gets their individual page instead of being shoved in the type declaration page.

* A type system page is added which describes PHP's type system, regardless if it is possible to declare the type in userland or not. Therefore, the type declaration page only has information related to writing type declarations in userland.

* The description of strict_type and the type coercion is moved into the type juggling page.

* Remove outdated information in string implementation section

* Add paragraph about using non string in string context can throw

Co-authored-by: Christoph M. Becker <cmbecker69@gmx.de>
2022-11-30 15:39:41 +00:00

40 lines
1.1 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<sect1 xml:id="language.types.never">
<title>Never</title>
<para>
<type>never</type> is a return-only type indicating the function
does not terminate. This means that it either calls <function>exit</function>,
throws an exception, or is an infinite loop.
Therefore, it cannot be part of a
<link linkend="language.types.type-system.composite.union">union type</link>
declaration. Available as of PHP 8.1.0.
</para>
<para>
<type>never</type> is, in type theory parlance, the bottom type.
Meaning it is the subtype of every other type and can replace any other
return type during inheritance.
</para>
</sect1>
<!-- 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
-->