From 212b22973b6585bc605f5a8a9559837006ce61ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E7=94=B0=20=E6=86=B2=E5=A4=AA=E9=83=8E?= Date: Mon, 12 Oct 2026 15:54:00 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=9E=E3=82=B8=E3=83=83=E3=82=AF=E5=AE=9A?= =?UTF-8?q?=E6=95=B0=E3=83=BBvoid=E3=83=BBnever=20=E3=81=AA=E3=81=A9?= =?UTF-8?q?=E3=81=AE=E8=AA=AC=E6=98=8E=E3=82=92=E5=8E=9F=E6=96=87=E3=81=AE?= =?UTF-8?q?=E5=A4=89=E6=9B=B4=E3=81=AB=E8=BF=BD=E5=BE=93=20(5=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- language/constants.xml | 251 +++++++++++------- .../control-structures/alternative-syntax.xml | 6 +- language/operators/increment.xml | 21 +- language/types/never.xml | 10 +- language/types/void.xml | 11 +- 5 files changed, 186 insertions(+), 113 deletions(-) diff --git a/language/constants.xml b/language/constants.xml index 4ca484369ed..941dae126bd 100644 --- a/language/constants.xml +++ b/language/constants.xml @@ -1,6 +1,6 @@ - + @@ -282,102 +282,154 @@ echo ANIMALS_DEF[1] . "\n"; // 出力は "cat" マジック定数 - - 使われる場所によって値が変化する定数(マジック定数)がいくつかあります。 - 例えば、__LINE__はスクリプト上において - 使われる行によって値が変化します。 - これらの - "マジック"定数は、実行時に解決される通常の定数とは異なり、コンパイル時に解決されます。 - これらの特別な定数は大文字小文字を区別しません。 - 内容は以下のとおりです: - - - - PHP の "マジック" 定数 - - - - &Name; - &Description; - - - - - __LINE__ - - ファイル上の現在の行番号。 - - - - __FILE__ - - ファイルのフルパスとファイル名 (シンボリックリンクを解決した後のもの)。 - インクルードされるファイルの中で使用された場合、インクルードされるファイルの名前が返されます。 - - - - __DIR__ - - そのファイルの存在するディレクトリ。include の中で使用すると、 - インクルードされるファイルの存在するディレクトリを返します。 - つまり、これは dirname(__FILE__) と同じ意味です。 - ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。 - - - - __FUNCTION__ - - 関数名。無名関数の場合は、{closure} - - - - __CLASS__ - - クラス名。 - クラス名には、そのクラスが宣言されている名前空間も含みます - (例 Foo\Bar)。 - トレイトのメソッド内で __CLASS__ を使うと、 - そのトレイトを use しているクラスの名前を返します。 - - - - __TRAIT__ - - トレイト名。 - トレイト名には、宣言された名前空間も含みます - (例 Foo\Bar)。 - - - - __METHOD__ - - クラスのメソッド名。 - - - - __PROPERTY__ - - プロパティ名。 - プロパティフック - の内部でのみ使用可能です。 - - - - __NAMESPACE__ - - 現在の名前空間の名前。 - - - - ClassName::class - - 完全に修飾されたクラス名。 - - - - -
-
+ + マジック定数は、ソースコード上の位置に関する情報に置き換えられるキーワードです。 + 置き換えられるのは、記述されているファイルと行、およびその箇所を囲む関数、クラス、トレイト、名前空間、プロパティフックの情報です。 + 「定数」という名前が付いていますが、実際の定数ではありません。 + defined と constant はマジック定数を認識せず、 + define で同じ名前の定数を作成しても、マジック定数には影響しません。 + マジック定数は大文字小文字を区別しません。 + クラスの外での __CLASS__ のように、該当する文脈の外で使用すると、 + 空文字列に置き換えられます。 + + + PHP の "マジック" 定数 + + + + &Name; + &Description; + + + + + __LINE__ + + 記述されている行の番号。 + + + + __FILE__ + + 記述されているファイルのフルパスとファイル名。 + シンボリックリンクは解決されます。 + + + + __DIR__ + + そのファイルの存在するディレクトリ。 + これは dirname(__FILE__) と同じ意味です。 + ルートディレクトリである場合を除き、ディレクトリ名の末尾にスラッシュはつきません。 + + + + __FUNCTION__ + + 記述されている関数の名前。 + 関数名には、その関数が宣言されている名前空間も含まれます + (例 Foo\bar)。 + メソッドの中では、メソッド名だけになります。 + 無名関数の場合は、クロージャが定義された場所を含む、エンジンが生成した名前になります + (PHP 8.4.0 以降)。それより前のバージョンでは {closure} です。 + + + + __CLASS__ + + 記述されているクラスの名前。 + クラス名には、そのクラスが宣言されている名前空間も含まれます + (例 Foo\Bar)。 + トレイトの中では、そのトレイトを use しているクラスの名前になります。 + 無名クラス + の場合は、エンジンが生成した名前になります。 + メソッドの呼び出し先となったクラスの名前を取得するには、 + static::class + を使ってください。 + + + + __TRAIT__ + + トレイト名。 + トレイト名には、宣言された名前空間も含まれます + (例 Foo\Bar)。 + + + + __METHOD__ + + 記述されているメソッドのクラス名とメソッド名 + (例 Foo\Bar::baz)。 + トレイトの中では、クラス名ではなくトレイト名が使われます。 + メソッドの外では、__FUNCTION__ と同じです。 + + + + __PROPERTY__ + + プロパティフック + の内部で使うと、そのプロパティの名前になります。 + PHP 8.4.0 以降で利用可能です。 + + + + __NAMESPACE__ + + 現在の名前空間の名前。 + + + + +
+ + + マジック定数の使用例 + +greet(); +echo __NAMESPACE__, "\n"; +]]> + + &example.outputs; + + + + &reftitle.seealso; @@ -385,9 +437,8 @@ echo ANIMALS_DEF[1] . "\n"; // 出力は "cat" ::class get_class - get_object_vars - file_exists - function_exists + get_called_class + dirname diff --git a/language/control-structures/alternative-syntax.xml b/language/control-structures/alternative-syntax.xml index 54643aa7e51..67d1a2c3720 100644 --- a/language/control-structures/alternative-syntax.xml +++ b/language/control-structures/alternative-syntax.xml @@ -1,6 +1,6 @@ - + 制御構造に関する別の構文 @@ -8,12 +8,12 @@ PHPは、いくつかの制御構造、つまり、if、 while、for、 - foreach、switch + foreach、switch、declare に関する別の構文を提供します。 各構造において開き波括弧をコロン(:)、閉じ波括弧をそれぞれ endif;,endwhile;, endfor;,endforeach;, - endswitch;に変更するのが + endswitch;,enddeclare;に変更するのが 別の構文の基本的な形式となります。 diff --git a/language/operators/increment.xml b/language/operators/increment.xml index 0eecb5871a6..49e75e1839e 100644 --- a/language/operators/increment.xml +++ b/language/operators/increment.xml @@ -1,6 +1,6 @@ - + 加算子/減算子 加算子/減算子 @@ -93,16 +93,17 @@ int(4) bool 型の値に、加算子や減算子を適用しても何も起こりません。 - PHP 8.3.0 以降では、この操作に対して E_WARNING が発生するようになりました。なぜなら、bool 型の値を暗黙のうちに数値型にキャストするように将来変更されるからです。 + PHP 8.3.0 以降では、この操作に対して E_WARNING が発生するようになりました。将来的には、値が暗黙のうちに int にキャストされるようになります。 null 型の値に、減算子を適用しても何も起こりません。 - PHP 8.3.0 以降では、この操作に対して E_WARNING が発生するようになりました。なぜなら、null 型の値を暗黙のうちに数値型にキャストするように将来変更されるからです。 + PHP 8.3.0 以降では、この操作に対して E_WARNING が発生するようになりました。将来的には、値が暗黙のうちに int にキャストされるようになります。 - + 数値形式の文字列 でない文字列に対して、減算子を適用しても何も起こりません。 - PHP 8.3.0 以降では、この操作に対して E_WARNING が発生するようになりました。なぜなら、こうした操作は TypeError がスローされるように将来変更されるからです。 - + ただし、空文字列は -1 になります。 + PHP 8.3.0 以降では、この操作に対して E_DEPRECATED が発生するようになりました。将来的には、TypeError がスローされるようになります。 + @@ -115,15 +116,19 @@ int(4) Perl 風の、文字列をインクリメントする機能 - この機能は、PHP 8.3.0 以降は soft-deprecated 扱い - (E_DEPRECATED は発生しないものの、新しいコードではこの機能を使うべきではない) になっています。 + この機能は、PHP 8.3.0 以降は soft-deprecated 扱いになっています。 str_increment を代わりに使いましょう。 + PHP 8.5.0 以降では、数値形式でない文字列をインクリメントすると、推奨されない警告が発生するようになりました。 PHP では、数値形式の文字列 でない文字列をインクリメントすることも可能です。この場合、文字列は英数字からなる、ASCII 文字列である必要があり、文字を次の文字に変更します。文字が Z に達すると、左の文字がひとつ繰り上がります。たとえば、$a = 'Z'; $a++; というコードは、$a を 'AA' に変更します。 + + PHP 8.3.0 以降では、空文字列や、英数字以外の文字を含む文字列をインクリメントすると、E_DEPRECATED が発生するようになりました。 + PHP 8.5.0 以降では、数値形式でない文字列すべてが対象になりました。 + Perl 風に、文字列をインクリメントする例 diff --git a/language/types/never.xml b/language/types/never.xml index a8cc7d073f3..e70a5ce3fb4 100644 --- a/language/types/never.xml +++ b/language/types/never.xml @@ -1,6 +1,6 @@ - + Never @@ -13,6 +13,14 @@ よって、この型は union 型 の一部として指定することが出来ません。 PHP 8.1.0 以降で利用できます。 + + 戻り値の型が never である関数の中で return 文を書くと、 + 実行時にその return に到達しない場合でも、 + コンパイル時にエラーになります。 + こうした関数が、スクリプトを終了することも、 + 例外をスローすることも、無限ループに入ることもなく末尾まで実行されると、 + TypeError がスローされます。 + never は、 型理論の用語で言うと、ボトム型にあたります。 diff --git a/language/types/void.xml b/language/types/void.xml index 8592777004d..959c92346ba 100644 --- a/language/types/void.xml +++ b/language/types/void.xml @@ -1,6 +1,6 @@ - + Void @@ -9,6 +9,15 @@ 戻り値のみで指定できる型ですが、関数自体が終了することはあります。 よって、この型は union 型 の一部として指定することが出来ません。 PHP 7.1.0 以降で利用できます。 + + 戻り値の型が void である関数の中で、式を指定した return 文を書くと、 + 実行時にその return に到達しない場合でも、 + コンパイル時にエラーになります。 + return null; と書いた場合も同様です。 + 関数を途中で抜けるには、式を指定しない return; を使います。 + 後述の null は、 + 関数を呼び出したときに暗黙的に得られる値にすぎません。 +