1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-23 22:52:11 +01:00

コアと移行ガイドを英語版の最新に追従 (#339)

* コアと移行ガイドを英語版の最新に追従

language/ コア:
- language/operators/precedence.xml: パイプ演算子と throw を追加
- language/predefined/generator/rewind.xml: 説明文を修正
- language/predefined/iterator/rewind.xml: rewind の注意事項を追加
- language/predefined/variables/server.xml: REQUEST_TIME の説明を修正
- faq/using.xml: 名前付き引数とプリペアドステートメントの推奨を追加
- language/predefined/closure.xml: Closure::getCurrent を追加
- language/control-structures/do-while.xml: インデント修正
- language/oop5/property-hooks.xml: 不足していた $modified プロパティを追加

reference/, appendices/:
- reference/opcache/ini.xml: 最適化パスのビットマスク表を追加
- appendices/reserved.constants.core.xml: PHP_BUILD_DATE, PHP_BUILD_PROVIDER を追加
- appendices/migration85/incompatible.xml: setlocale の整数引数の変更を追加
- reference/strings/functions/setlocale.xml: 変更履歴セクションを追加

* 用語の統一(オプティマイザー→最適化エンジン)
This commit is contained in:
KentarouTakeda
2026-03-02 08:11:12 +09:00
committed by GitHub
parent 33a0e917b4
commit 0115bb427d
12 changed files with 287 additions and 31 deletions

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 87d781c7710702181b0d0669cf2c4d0f5c9d3037 Maintainer: mumumu Status: ready -->
<!-- EN-Revision: ec01a42be50e84f192c0b19fc6e9cf40a0f7ac31 Maintainer: mumumu Status: ready -->
<sect1 xml:id="migration85.incompatible" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>下位互換性のない変更点</title>
@@ -500,6 +500,13 @@
<exceptionname>TypeError</exceptionname> がスローされるようになりました。
</simpara>
<simpara>
<function>setlocale</function>
<parameter>locales</parameter> 引数に整数 <literal>0</literal>
を渡すことはサポートされなくなり、
<exceptionname>TypeError</exceptionname> がスローされるようになりました。
</simpara>
</sect2>
<sect2 xml:id="migration85.incompatible.simplexml">

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: b2fa00ca2e052f87785a7f8b296466edc4e55767 Maintainer: takagi Status: ready -->
<!-- EN-Revision: 04250271154f102f7aa1d629665a30fdb670b927 Maintainer: takagi Status: ready -->
<!-- CREDITS: hirokawa,shimooka,mumumu -->
<sect2 xml:id="reserved.constants.core" xmlns="http://docbook.org/ns/docbook">
<title>コアの定義済みの定数</title>
@@ -83,6 +83,34 @@
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.php-build-date">
<term>
<constant>PHP_BUILD_DATE</constant>
(<type>string</type>)
</term>
<listitem>
<simpara>
PHP がビルドされた日時。<literal>"M d Y H:i:s"</literal> 形式。PHP 8.5.0 以降で利用可能。
</simpara>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.php-build-provider">
<term>
<constant>PHP_BUILD_PROVIDER</constant>
(<type>string</type>)
</term>
<listitem>
<simpara>
PHP をビルドしたプロバイダー。PHP 8.5.0 以降で利用可能。
</simpara>
<note>
<simpara>
この定数は、すべての PHP ビルドで利用可能とは限りません
(例: ソースからビルドする際に、構成時に値を指定しなかった場合は設定されません)。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.zend-thread-safe">
<term>
<constant>ZEND_THREAD_SAFE</constant>
@@ -405,6 +433,11 @@
<simpara>
man ページのインストール先。
</simpara>
<note>
<simpara>
この定数は、Windows ビルドの PHP には存在しません。
</simpara>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="constant.php-libdir">
@@ -698,9 +731,9 @@
</listitem>
</varlistentry>
</variablelist>
<para>
<simpara>
<link linkend="language.constants.magic">マジック定数</link> も参照ください。
</para>
</simpara>
</sect2>
<!-- Keep this comment at the end of the file
Local variables:

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: aab33d644359aba597e810e2fc0c0caa0d347c9c Maintainer: hirokawa Status: ready -->
<!-- EN-Revision: 1709768e97fce7848c62aa2bf988419527bd1e8e Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi,mumumu -->
<chapter xml:id="faq.using" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -15,7 +15,6 @@
<qandaset>
<qandaentry xml:id="faq.using.parameterorder">
<!-- TODO: Mention named arguments -->
<question>
<para>
PHP の関数のパラメータの順番を覚えられません。だって関数によってばらばらなんだもん。
@@ -33,6 +32,10 @@
<link linkend="book.strings">文字列関数</link> はその逆で
"<emphasis>haystack, needle</emphasis>" の順となります。
</para>
<para>
PHP 8.0 以降では、<link linkend="functions.named-arguments">名前付き引数</link>
によってパラメータ名で引数を渡すことができるため、パラメータの順序をそれほど気にする必要はありません。
</para>
</answer>
</qandaentry>
@@ -48,7 +51,7 @@
<para>
PHPは<varname>$_POST</varname>のような
<link linkend="language.variables.predefined">定義済みの変数</link>
を沢山提供しています。<varname>$_POST</varname>を連想配列として
を沢山提供しています。<varname>$_POST</varname> を連想配列として
ループすることでPOSTされた全ての値にアクセスできます。例えば、
&foreach; で単純にループして <function>empty</function> で値をチェックし、
結果を出力します。
@@ -101,6 +104,12 @@ if (empty($empty)) {
<function>stripslashes</function> もありますが、
これはさらに古い時代の PHP コードで使われていたものです。
</para>
<para>
手動で値をエスケープする方法はエラーが発生しやすく、コンテキストに依存します。
エスケープした文字列を連結してクエリを組み立てるのではなく、
プリペアドステートメントとパラメータバインディングをサポートする
データベース API を使うようにしてください。
</para>
</answer>
</qandaentry>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 7104ee97ced1768a3231588dfc0bc0d7eb1117ad Maintainer: takagi Status: ready -->
<!-- EN-Revision: 53fb200fed6d316b0616a915eb87a40de1d80f51 Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<sect1 xml:id="control-structures.do.while" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -57,7 +57,7 @@ do {
if ($i < $minimum_limit) {
break;
}
echo "iはOKです。";
echo "iはOKです。";
/* i を処理します */

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: cd2980a57a0845def25ed84276d9662159a91bd5 Maintainer: KentarouTakeda Status: ready -->
<!-- EN-Revision: 88eb0d53c6520804fb1dc17f35fa481451657fb7 Maintainer: KentarouTakeda Status: ready -->
<sect1 xml:id="language.oop5.property-hooks" xmlns="http://docbook.org/ns/docbook">
<title>プロパティフック</title>
@@ -184,6 +184,8 @@ class Example
<?php
class Example
{
private bool $modified = false;
public string $foo = 'default value' {
get => $this->foo . ($this->modified ? ' (modified)' : '');
set => strtolower($value);

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: mumumu Status: ready -->
<!-- EN-Revision: a7428462fea1c0387cf5e8473b4c48c3c8ac8c2c Maintainer: mumumu Status: ready -->
<sect1 xml:id="language.operators.precedence">
<title>演算子の優先順位</title>
<titleabbrev>演算子の優先順位</titleabbrev>
@@ -149,6 +149,13 @@
<link linkend="language.operators.string">文字列演算子</link> (PHP 8.0.0 以降)
</entry>
</row>
<row>
<entry>left</entry>
<entry><literal>|&gt;</literal></entry>
<entry>
<link linkend="language.operators.functional">パイプ演算子</link>
</entry>
</row>
<row>
<entry>結合しない</entry>
<entry>
@@ -287,6 +294,13 @@
<link linkend="language.operators.logical">論理演算子</link>
</entry>
</row>
<row>
<entry>(n/a)</entry>
<entry><literal>throw</literal></entry>
<entry>
<link linkend="language.exceptions">throw</link>
</entry>
</row>
</tbody>
</tgroup>
</table>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: da5ebdf7e0b710ac4f20b53f7c09cf9fa1346d3e Maintainer: takagi Status: ready -->
<!-- EN-Revision: d74f3573b3831b2db8f31f774cff32eb8560ba6e Maintainer: takagi Status: ready -->
<!-- Credits: mumumu -->
<reference xml:id="class.closure" role="class" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude">
@@ -85,6 +85,7 @@
&language.predefined.closure.bindto;
&language.predefined.closure.call;
&language.predefined.closure.fromcallable;
&language.predefined.closure.getcurrent;
</reference>
<!-- Keep this comment at the end of the file

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 873a99f094902ad72129ab391b1fb80525fab30e Maintainer: takagi Status: ready -->
<!-- EN-Revision: 5e6944e79f2b19783627d76bd7fd1411feb23c65 Maintainer: takagi Status: ready -->
<refentry xml:id="generator.rewind" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Generator::rewind</refname>
<refpurpose>イテレータを最初の yield まで巻き戻す</refpurpose>
<refpurpose>最初の yield までジェネレータを実行する</refpurpose>
</refnamediv>
<refsect1 role="description">
@@ -14,12 +14,11 @@
<void/>
</methodsynopsis>
<para>
このメソッドは ジェネレーターを最初の &yield; の前のポイントまで巻き戻します。
このメソッドがコールされた際に
ジェネレーターが最初の &yield; 式に達していない場合、
巻き戻す前に最初の &yield; まで進めます。
ジェネレーターが既に二番目の &yield; の始点に達している場合は
<classname>Exception</classname> がスローされます。
<emphasis>最初の</emphasis> &yield; までジェネレーターを実行します。
ジェネレーターが既に <emphasis>最初の</emphasis> &yield; に到達している場合
何も行いません。
ジェネレーターが &yield; 式を越えて進んでいる場合、
このメソッドは <classname>Exception</classname> をスローします。
</para>
<note>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 460f49a93d103cac99556147cb9325b095ca3d42 Maintainer: takagi Status: ready -->
<!-- EN-Revision: 7fbb16f538011636999459326a55d5f153ef2c61 Maintainer: takagi Status: ready -->
<refentry xml:id="iterator.rewind" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>Iterator::rewind</refname>
@@ -23,6 +23,15 @@
&foreach; ループの <emphasis></emphasis>
には実行 <emphasis>されません</emphasis>
</para>
<simpara>
&foreach; は反復処理の開始前に必ず <methodname>rewind</methodname> を呼び出すため、
手動でイテレータの位置を進めていた場合(例えば
<methodname>SplFileObject::seek</methodname> を使って移動した場合など)でもリセットされます。
</simpara>
<simpara>
巻き戻しを行わずに反復処理を行うには、
<classname>NoRewindIterator</classname> でラップしてください。
</simpara>
</note>
</refsect1>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: a124543dd3f6b1e5567b07420d23899e582514dc Maintainer: satoruyoshida Status: ready -->
<!-- EN-Revision: 6b413423c754810252b812d2a28fc627be4579dd Maintainer: satoruyoshida Status: ready -->
<!-- CREDITS: mumumu -->
<refentry role="variable" xml:id="reserved.variables.server" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -171,16 +171,16 @@
<term>'<varname>REQUEST_TIME</varname>'</term>
<listitem>
<simpara>
リクエストの開始時のタイムスタンプ。
PHP がリクエストの処理を開始した時のタイムスタンプ。
</simpara>
</listitem>
</varlistentry>
<varlistentry>
<term>'<varname>REQUEST_TIME_FLOAT</varname>'</term>
<listitem>
<simpara>
リクエストの開始時のタイムスタンプ (マイクロ秒までの精度)。
PHP がリクエストの処理を開始した時のタイムスタンプ (マイクロ秒までの精度)。
</simpara>
</listitem>
</varlistentry>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 87d6bb1bbd5f118f5b0cf0160438f06c0f91ea45 Maintainer: satoruyoshida Status: ready -->
<!-- EN-Revision: 8ea24dc32374bf4f6b04005e317101e4c65a0214 Maintainer: satoruyoshida Status: ready -->
<!-- CREDITS: mumumu -->
<sect1 xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="opcache.configuration">
&reftitle.runtime;
@@ -578,10 +578,170 @@
<listitem>
<simpara>
どの最適化パスが実行されるかコントロールするビットマスク。
デフォルトで、すべての安全な最適化を適用します。
デフォルト値の変更が役に立つのは、
大半が最適化エンジンをデバッグ/開発する時です(<link linkend="ini.opcache.opt_debug_level">opcache.opt_debug_level</link> も参照ください)
デフォルト値は <literal>0x7FFEBFFF</literal> で、すべての安全な最適化が有効になっています。
最適化を無効にしたり、安全でない最適化を有効にするのが役に立つのは、
大半が最適化エンジンをデバッグ/開発する時です。
</simpara>
<simpara>
ビットマスクの各ビットが、特定の最適化パスを有効にします:
</simpara>
<table>
<title>最適化パスのビットマスク</title>
<tgroup cols="4">
<thead>
<row>
<entry>ビット</entry>
<entry>パス名</entry>
<entry>&Description;</entry>
<entry>デフォルト</entry>
</row>
</thead>
<tbody>
<row>
<entry>0</entry>
<entry>PASS_1</entry>
<entry>単純なピープホール最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>1</entry>
<entry>PASS_2</entry>
<entry>未使用 (PASS_1 に統合済み)</entry>
<entry>有効</entry>
</row>
<row>
<entry>2</entry>
<entry>PASS_3</entry>
<entry>単純なジャンプ最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>3</entry>
<entry>PASS_4</entry>
<entry>コール最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>4</entry>
<entry>PASS_5</entry>
<entry>制御フローグラフに基づく最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>5</entry>
<entry>PASS_6</entry>
<entry>データフロー解析に基づく最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>6</entry>
<entry>PASS_7</entry>
<entry>SSA ベースの最適化にコールグラフを使用するかどうか</entry>
<entry>有効</entry>
</row>
<row>
<entry>7</entry>
<entry>PASS_8</entry>
<entry>疎条件定数伝播</entry>
<entry>有効</entry>
</row>
<row>
<entry>8</entry>
<entry>PASS_9</entry>
<entry>一時変数の最適化</entry>
<entry>有効</entry>
</row>
<row>
<entry>9</entry>
<entry>PASS_10</entry>
<entry>NOP オペコードの除去</entry>
<entry>有効</entry>
</row>
<row>
<entry>10</entry>
<entry>PASS_11</entry>
<entry>リテラルの圧縮</entry>
<entry>有効</entry>
</row>
<row>
<entry>11</entry>
<entry>PASS_12</entry>
<entry>コールスタックサイズの事前計算</entry>
<entry>有効</entry>
</row>
<row>
<entry>12</entry>
<entry>PASS_13</entry>
<entry>未使用変数の除去</entry>
<entry>有効</entry>
</row>
<row>
<entry>13</entry>
<entry>PASS_14</entry>
<entry>デッドコードの除去</entry>
<entry>有効</entry>
</row>
<row>
<entry>14</entry>
<entry>PASS_15</entry>
<entry>定数宣言の収集と置換 (安全でない)</entry>
<entry><emphasis>無効</emphasis></entry>
</row>
<row>
<entry>15</entry>
<entry>PASS_16</entry>
<entry>自明な関数のインライン化 (コール最適化の一部)</entry>
<entry>有効</entry>
</row>
<row>
<entry>16</entry>
<entry>(フラグ)</entry>
<entry>演算子オーバーロードの可能性を無視する (安全でない)</entry>
<entry><emphasis>無効</emphasis></entry>
</row>
</tbody>
</tgroup>
</table>
<note>
<title>安全な最適化と安全でない最適化</title>
<simpara>
<emphasis>安全な最適化</emphasis> (デフォルトで有効) は、
PHP コードの正確な動作を維持しつつパフォーマンスを向上させます。
デッドコードの除去、定数畳み込み、ジャンプ最適化がこれに含まれます。
</simpara>
<simpara>
<emphasis>安全でない最適化</emphasis> (デフォルトで無効) は、
エッジケースで動作を変える可能性があります:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<emphasis>ビット 14</emphasis>: 定数の収集。定数がコンパイル時に置換され、
実行時の宣言順序が無視されます:
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
echo getA(); // Error をスローする代わりに "hello" を出力
const A = "hello";
function getA() { return A; }
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
<emphasis>ビット 16</emphasis>: 演算子オーバーロードを無視。
<literal>do_operation</literal> を持つクラス
(例: <link linkend="book.gmp">GMP</link>
<link linkend="book.bc">BCMath</link>) を
算術演算で使用している場合に安全ではありません。
型宣言を使用することで、最適化エンジンは同じ最適化を安全に適用できます。
</simpara>
</listitem>
</itemizedlist>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.opcache.inherited-hack">

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 09324fb1df7b5b1c0a5f95e3ebbe802f59da4585 Maintainer: hirokawa Status: ready -->
<!-- EN-Revision: ec01a42be50e84f192c0b19fc6e9cf40a0f7ac31 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: shimooka,mumumu -->
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.setlocale">
<refnamediv>
@@ -165,7 +165,29 @@
</para>
</note>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.5.0</entry>
<entry>
<parameter>locales</parameter> 引数に整数 <literal>0</literal>
を渡すことはサポートされなくなり、
<classname>TypeError</classname> がスローされるようになりました。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>