11<?xml version =" 1.0" encoding =" utf-8" ?>
22<!-- $Revision$ -->
3- <!-- EN-Revision: 86e6094e86b84a51d00ab217ac50ce8dde33d82a Maintainer: hirokawa Status: ready -->
3+ <!-- EN-Revision: 2aaaf1967f2510471b694daf8e41a419fc98b751 Maintainer: hirokawa Status: ready -->
44<!-- CREDITS: takagi -->
55<refentry xml : id =" function.exit" xmlns =" http://docbook.org/ns/docbook" >
66 <refnamediv >
77 <refname >exit</refname >
8- <refpurpose >メッセージを出力し、現在のスクリプトを終了する </refpurpose >
8+ <refpurpose >ステータスコードかメッセージを返して現在のスクリプトを終了する </refpurpose >
99 </refnamediv >
10-
10+
1111 <refsect1 role =" description" >
1212 &reftitle.description;
1313 <methodsynopsis >
14- <type >void</type ><methodname >exit</methodname >
15- <methodparam choice =" opt" ><type >string</type ><parameter >status</parameter ></methodparam >
16- </methodsynopsis >
17- <methodsynopsis >
18- <type >void</type ><methodname >exit</methodname >
19- <methodparam ><type >int</type ><parameter >status</parameter ></methodparam >
14+ <type >never</type ><methodname >exit</methodname >
15+ <methodparam choice =" opt" ><type class =" union" ><type >string</type ><type >int</type ></type ><parameter >status</parameter ><initializer >0</initializer ></methodparam >
2016 </methodsynopsis >
21- <para >
17+ <simpara >
2218 スクリプトの実行を終了します。
2319 <link linkend =" function.register-shutdown-function" >シャットダウン関数</link >
2420 や <link linkend =" language.oop5.decon.destructor" >オブジェクトのデストラクタ</link >
25- は、<literal >exit</literal > がコールされた場合にも実行されます。
26- </para >
27- <para >
28- <literal >exit</literal > は言語構造です。
29- <parameter >status</parameter > を指定しない場合は括弧なしでコールできます。
30- </para >
21+ は、<function >exit</function > がコールされた場合にも実行されます。
22+ ただし、&finally; ブロックは実行されません。
23+ </simpara >
24+ <simpara >
25+ 終了コード <literal >0</literal > は、そのタスクでプログラムが成功したことを表します。
26+ 他の値は、実行中に何らかのエラーが発生したことを表します。
27+ </simpara >
28+ <simpara >
29+ <function >exit</function > は特殊な関数です。
30+ パーサーに専用のトークンがあるため、文として使用して(つまり、括弧なしで)、
31+ デフォルトのステータスコードでスクリプトを終了させることができます。
32+ </simpara >
33+ <caution >
34+ <simpara >
35+ グローバルな <function >exit</function > を無効にしたり、
36+ 名前空間つきの関数でシャドーイングすることはできません。
37+ </simpara >
38+ </caution >
3139 </refsect1 >
3240
3341 <refsect1 role =" parameters" >
3442 &reftitle.parameters;
35- <para >
36- <variablelist >
37- <varlistentry >
38- <term ><parameter >status</parameter ></term >
39- <listitem >
40- <para >
41- <parameter >status</parameter > が文字列の場合は、この関数は終了直前に
42- <parameter >status</parameter > を表示します。
43- </para >
44- <para >
45- <parameter >status</parameter > が <type >int</type > の場合は
46- その値が終了ステータスとして使われ、表示はされません。終了ステータスは
47- 0 から 254 までの値でなければなりません。終了ステータス 255 は
48- PHP に予約されており、使用してはいけません。ステータス 0 は、
49- プログラムを正常終了させる際に使用します。
50- </para >
51- </listitem >
52- </varlistentry >
53- </variablelist >
54- </para >
43+ <variablelist >
44+ <varlistentry >
45+ <term ><parameter >status</parameter ></term >
46+ <listitem >
47+ <simpara >
48+ <parameter >status</parameter > が文字列の場合は、
49+ この関数は終了直前に <parameter >status</parameter > を表示します。
50+ PHP によって返される終了コードは <literal >0</literal > です。
51+ </simpara >
52+ <para >
53+ <parameter >status</parameter > が <type >int</type > の場合は、
54+ この関数は終了直前に <parameter >status</parameter > を表示します。
55+ <note >
56+ <simpara >
57+ 終了コードは <literal >0</literal > から <literal >254</literal > の範囲でなければならず、
58+ 終了コード <literal >255</literal > は PHP によって予約されているため使用できません。
59+ </simpara >
60+ </note >
61+ </para >
62+ <warning >
63+ <simpara >
64+ PHP 8.4.0 より前のバージョンでは、 <function >exit</function > は PHP の標準的な
65+ <link linkend =" language.types.type-juggling.function" >型の相互変換のセマンティクス</link >に基づいておらず、
66+ また、<link linkend =" language.types.declarations.strict" ><literal >strict_types</literal ></link > 宣言も適用されませんでした。
67+ </simpara >
68+ <simpara >
69+ また、<type >resource</type > や <type >array</type > を含む、<type >int</type > 型以外の値は
70+ <type >string</type > にキャストされていました。
71+ PHP 8.4.0 以降は、通常の型の相互変換が適用され、無効な値に対しては
72+ <exceptionname >TypeError</exceptionname > をスローします。
73+ </simpara >
74+ </warning >
75+ </listitem >
76+ </varlistentry >
77+ </variablelist >
5578 </refsect1 >
5679
5780 <refsect1 role =" returnvalues" >
5881 &reftitle.returnvalues;
59- <para >
60- &return.void;
61- </para >
82+ <simpara >
83+ この関数は PHP スクリプトを終了するため、値を返すことはありません。
84+ </simpara >
85+ </refsect1 >
86+
87+ <refsect1 role =" changelog" >
88+ &reftitle.changelog;
89+ <informaltable >
90+ <tgroup cols =" 2" >
91+ <thead >
92+ <row >
93+ <entry >&Version; </entry >
94+ <entry >&Description; </entry >
95+ </row >
96+ </thead >
97+ <tbody >
98+ <row >
99+ <entry >8.4.0</entry >
100+ <entry >
101+ <function >exit</function > は言語構造から正式な関数になったので、
102+ 通常の
103+ <link linkend =" language.types.type-juggling.function" >型の相互変換</link >
104+ に従い、
105+ <link linkend =" language.types.declarations.strict" ><literal >strict_types</literal ></link >
106+ 宣言も適用されるようになりました。また、名前付き引数や
107+ <link linkend =" functions.variable-functions" >可変関数</link >
108+ によって呼び出すこともできるようになりました。
109+ </entry >
110+ </row >
111+ </tbody >
112+ </tgroup >
113+ </informaltable >
62114 </refsect1 >
63115
64116 <refsect1 role =" examples" >
65117 &reftitle.examples;
66- <para >
67- <example >
68- <title ><literal >exit</literal > の例</title >
69- <programlisting role =" php" >
118+ <example >
119+ <title ><function >exit</function > の基本的な使用例</title >
120+ <programlisting role =" php" >
70121<![CDATA[
71122<?php
72123
73- $filename = '/path/to/data-file';
74- $file = fopen($filename, 'r')
75- or exit("ファイル ($filename) をオープンできません");
124+ // exit program normally
125+ exit();
126+ exit(0);
127+
128+ // exit with an error code
129+ exit(1);
76130
77131?>
78132]]>
79- </programlisting >
80- </example >
81- </para >
82- <para >
83- <example >
84- <title ><literal >exit</literal > でステータスを指定する例</title >
85- <programlisting role =" php" >
133+ </programlisting >
134+ </example >
135+ <example >
136+ <title ><function >exit</function > に<type >string</type >を渡す例</title >
137+ <programlisting role =" php" >
86138<![CDATA[
87139<?php
88140
89- // 正常終了
90- exit;
91- exit();
92- exit(0);
93-
94- // エラーコードつきの終了
95- exit(1);
96- exit(0376); // 八進数
141+ $filename = '/path/to/data-file';
142+ $file = fopen($filename, 'r')
143+ or exit("unable to open file ($filename)");
97144
98145?>
99146]]>
100- </programlisting >
101- </example >
102- </para >
103- <para >
104- <example >
105- <title >シャットダウン関数やデストラクタが実行される例</title >
106- <programlisting role =" php" >
147+ </programlisting >
148+ </example >
149+ <example >
150+ <title >シャットダウン関数やデストラクタが実行される例</title >
151+ <programlisting role =" php" >
107152<![CDATA[
108153<?php
109154class Foo
@@ -126,41 +171,50 @@ exit();
126171echo 'これは出力されません。';
127172?>
128173]]>
129- </programlisting >
130- &example.outputs;
131- <screen >
132- <![CDATA[
133- Shutdown: shutdown()
134- Destruct: Foo::__destruct()
135- ]]>
136- </screen >
137- </example >
138- </para >
174+ </programlisting >
175+ &example.outputs;
176+ <screen >
177+ <![CDATA[
178+ Shutdown: shutdown()
179+ Destruct: Foo::__destruct()
180+ ]]>
181+ </screen >
182+ </example >
183+ <example >
184+ <title >文としての <function >exit</function ></title >
185+ <programlisting role =" php" >
186+ <![CDATA[
187+ <?php
188+
189+ // exit program normally with exit code 0
190+ exit;
191+
192+ ?>
193+ ]]>
194+ </programlisting >
195+ </example >
139196 </refsect1 >
140197
141198 <refsect1 role =" notes" >
142199 &reftitle.notes;
143-
144- ¬e.language-construct;
145-
146- <note >
147- <para >
148- この言語構造は、<function >die</function > と等価です。
149- </para >
150- </note >
200+ <warning >
201+ <simpara >
202+ PHP 8.4.0 以降は、 <function >exit</function > は関数ではなく言語構造でした。
203+ したがって、 <link linkend =" functions.variable-functions" >可変関数</link > や <link linkend =" functions.named-arguments" >名前付き引数</link > を使って関数を呼び出すことはできませんでした。
204+ </simpara >
205+ </warning >
151206 </refsect1 >
152207
153208 <refsect1 role =" seealso" >
154209 &reftitle.seealso;
155- <para >
156- <simplelist >
157- <member ><function >register_shutdown_function</ function ></member >
158- </ simplelist >
159- </para >
210+ <simplelist >
211+ <member >< function >register_shutdown_function</ function ></ member >
212+ <member ><link linkend = " function.register-shutdown-function " >シャットダウン関数</ link ></member >
213+ <member >< link linkend = " language.oop5.decon.destructor " >オブジェクトのデストラクタ</ link ></ member >
214+ </simplelist >
160215 </refsect1 >
161216
162217</refentry >
163-
164218<!-- Keep this comment at the end of the file
165219Local variables:
166220mode: sgml
0 commit comments