Date: 08/20/00
- Next message: Rui Hirokawa: "[PHP-DOC] cvs: phpdoc /ja/functions filesystem.xml info.xml network.xml pgsql.xml"
- Previous message: Lars Torben Wilson: "[PHP-DOC] Manual structure (was: [PHP-DOC] Re: "waldschrotts guide to nifty references")"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
hirokawa Sun Aug 20 00:59:00 2000 EDT
Added files:
/phpdoc/ja/language references.xml
Modified files:
/phpdoc/ja/language control-structures.xml variables.xml
Log:
corrected some typos and update translations
Index: phpdoc/ja/language/control-structures.xml
diff -u phpdoc/ja/language/control-structures.xml:1.8 phpdoc/ja/language/control-structures.xml:1.9
--- phpdoc/ja/language/control-structures.xml:1.8 Fri Aug 18 23:13:33 2000
+++ phpdoc/ja/language/control-structures.xml Sun Aug 20 00:58:59 2000
@@ -757,8 +757,15 @@
に置換します。
</simpara>
<simpara>
- ファイルの読み込みに関して注意すべき点としては、
- ファイルが<function>include</function>または<function>require</function>
+ "URL fopen ラッパー"がPHPで有効な場合(デフォルト設定では有効です)、
+ ローカルなパス名の代わりにURLを用いて<function>require</function>
+ されるファイルを指定することが可能です。詳細な情報については、
+ <link linkend="features.remote-files">リモートファイル</link>と
+ <function>fopen</function>を参照下さい。
+ </simpara>
+ <simpara>
+ ファイルの読み込みに関して注意すべき点としては、ファイルが
+ <function>include</function>または<function>require</function>
される際には、読み込まれるファイルの先頭でPHPモードから抜け
HTMLモードになること、読み込み完了時にPHPモードに戻ることがあります。
このため、読み込むファイル中のPHPコードとして実行する必要がある
@@ -797,32 +804,52 @@
</programlisting>
</informalexample>
</para>
+ <simpara>
+ ファイルが<function>require</function>で読み込まれる際、そのファイ
+ ルに含まれるコードは、<function>require</function>を実行する行の変
+ 数スコープを継承します。コールする側のファイルのその行で利用可能な
+ 全ての変数が、読み込まれたファイル内で利用可能です。コールする側の
+ ファイルの関数内で<function>require</function>を行う場合、コールさ
+ れるファイルに含まれる全てのコードは、その関数内で定義されているも
+ のとして動作します。
+ </simpara>
<para>
- <function>include</function>および<function>require</function>は共に
- 実際にターゲットファイルの中身を呼出側のファイル自体に読みこむことに
- 注意してください。ターゲットをHTTPのようなものを経由してコールする
- わけではありません。
- 読み込まれるファイルは実際に呼出側のファイルの一部になるため、
- 呼出側のスコープで設定された全ての変数は読み込まれるファイルの中
- でも自動的に利用可能です。
+ <function>require</function>で読み込まれたファイルが、fopen ラッパー
+ を用いてHTTP経由でコールされた場合、そして、ターゲットのサーバーが
+ そのターゲットファイルをPHPコードとして解釈する場合、変数は、
+ HTTP GETを使用している場合と同様にURLリクエストとして
+ <function>require</function>されたファイルに渡すことが可能です。
+ 直接的な記述ではありませんが、<function>require</function>でファイル
+ を読み込むのと同様に親ファイルの変数スコープを継承します。
+ スクリプトは、実際にはリモートサーバーで実行された後、結果はローカ
+ ルスクリプトに読み込まれます。
<informalexample>
<programlisting role="php">
-require ("file.inc?varone=1&vartwo=2"); /* 動作せず */
+/* この例は、someserverで .php を処理するように設定されており、.txt に
+ * ついては設定されていないことを仮定しています。また、ここでの'動作す
+ * る'という意味は、変数 $varoneと$vartwoがrequire()で読み込まれたファ
+ * イルで利用であることを意味します。*/
+
+/* 動作しない; file.txt は、someserverで処理されない。 */
+require ("http://someserver/file.txt?varone=1&vartwo=2");
+
+/* 動作しない; ローカルファイルシステムの'file.php?varone=1&vartwo=2'
+ * という名前のファイルを探す。 */
+require ("file.php?varone=1&vartwo=2");
+
+/* 動作する。 */
+require ("http://someserver/file.php?varone=1&vartwo=2");
$varone = 1;
$vartwo = 2;
-require ("file.inc"); /* $varoneと$vartwoはfile.incで利用可能 */
+require ("file.txt"); /* 動作する。 */
+require ("file.php"); /* 動作する。 */
</programlisting>
</informalexample>
</para>
<simpara>
- <link linkend="features.remote-files">リモートファイル</link>機能により
- HTTP経由でrequireやincludeによるファイルの読み込めることと誤解しないで
- 下さい。その場合は、可能です。
- </simpara>
- <simpara>
- PHP3では、<function>require</function>されたファイルのグローバルスコープで
- のみ<function>require</function>されたファイル内で
+ PHP3では、<function>require</function>されたファイルのグローバルス
+ コープでのみ<function>require</function>されたファイル内で
<literal>return</literal>文を実行することが可能です。
ブロック内(括弧{}の中を意味します)では使用することはできません。
しかし、PHP4では、この機能は廃止されました。この機能が必要な場合、
@@ -842,17 +869,24 @@
評価します。
</simpara>
<simpara>
- ファイルの読み込みに関して注意すべき点としては、
- ファイルが<function>include</function>または<function>require</function>
- される際には、読み込まれるファイルの先頭でPHPモードから抜け
- HTMLモードになること、読み込み完了時にPHPモードに戻ることがあります。
+ "URL fopen ラッパー"がPHPで有効な場合(デフォルト設定では有効です)、
+ ローカルなパス名の代わりにURLを用いて<function>include</function>
+ されるファイルを指定することが可能です。詳細な情報については、
+ <link linkend="features.remote-files">リモートファイル</link>と
+ <function>fopen</function>を参照下さい。
+ </simpara>
+ <simpara>
+ ファイルの読み込みに関して注意すべき点としては、ファイルが
+ <function>include</function>または<function>require</function>
+ される際には、読み込まれるファイルの先頭でPHPモードから抜けてHTML
+ モードになること、読み込み完了時にPHPモードに戻ることがあります。
このため、読み込むファイル中のPHPコードとして実行する必要がある
- コードは、<link linkend="language.basic-syntax.phpmode">
- 有効なPHPの開始タグおよび終了タグ </link>で括る必があります。
+ コードは、<link linkend="language.basic-syntax.phpmode">有効なPHP
+ の開始タグおよび終了タグ </link>で括る必要があります。
</simpara>
<para>
読み込み処理は<literal>include</literal>文を処理する度に行われます。
- このため、異なった複数のファイルを読み込むためにルッצNj造の中で
+ このため、異なった複数のファイルを読み込むためにループ構造の中で
<literal>include</literal>を使用することができます。
<informalexample>
<programlisting role="php">
@@ -864,12 +898,12 @@
</informalexample>
</para>
<para>
- <function>include</function>は<function>require</function>と異なり、
- include文が実行される度に再度評価されます。
- (そして、実行時に初めて評価されます。)一方、<function>require</function>文は、
- (条件式がfalseである<link linkend="control-structures.if">if</link>
- 文の中にある場合のように)読み込まれるファイルの内容が評価されるかによらず
- 最初に処理された際に読み込まれるファイルで置換されます。
+ <function>include</function>は<function>require</function>と異なり、
+ include文が実行される度に再度評価されます。(そして、実行時に初めて
+ 評価されます。)一方、<function>require</function>文は、(条件式が
+ falseである<link linkend="control-structures.if">if</link>文の中に
+ ある場合のように)読み込まれるファイルの内容が評価されるかによらず最
+ 初に処理された際に読み込まれるファイルで置換されます。
</para>
<para>
<function>include</function>は特殊な言語構造なので、if構造内
@@ -975,33 +1009,53 @@
</screen>
</para>
<para>
- 偽の'27'はPHP3がファイルから<literal>return</literal>により値を返すことを
- サポートしていないことによるものです。
+ スプリアス'27'はPHP3がファイルから<literal>return</literal>により
+ 値を返すことをサポートしていないことによるものです。
</para>
</example>
+ <simpara>
+ ファイルが<function>include</function>で読み込まれる際、そのファイ
+ ルに含まれるコードは、<function>include</function>を実行する行の変
+ 数スコープを継承します。コールする側のファイルのその行で利用可能な
+ 全ての変数が、読み込まれたファイル内で利用可能です。コールする側の
+ ファイルの関数内で<function>include</function>を行う場合、コールさ
+ れるファイルに含まれる全てのコードは、その関数内で定義されているも
+ のとして動作します。
+ </simpara>
<para>
- <function>include</function>および<function>require</function>は共に
- 実際にターゲットファイルの中身を呼出側のファイル自体に読みこむことに
- 注意してください。ターゲットをHTTPのようなものを経由してコールする
- わけではありません。よって、
- インクルードされるファイルは効率的に呼出側のファイルの一部になるため、
- インクルードされた側のスコープで設定された全ての変数はインクルード
- されるファイルの中でも自動的に利用可能です。
+ <function>include</function>で読み込まれたファイルが、fopen ラッパー
+ を用いてHTTP経由でコールされた場合、そして、ターゲットのサーバーが
+ そのターゲットファイルをPHPコードとして解釈する場合、変数は、
+ HTTP GETを使用している場合と同様にURLリクエストとして
+ <function>include</function>されたファイルに渡すことが可能です。
+ 直接的な記述ではありませんが、<function>include</function>でファイル
+ を読み込むのと同様に親ファイルの変数スコープを継承します。
+ スクリプトは、実際にはリモートサーバーで実行された後、結果はローカ
+ ルスクリプトに読み込まれます。
<informalexample>
<programlisting role="php">
-include( "file.inc?varone=1&vartwo=2" ); /* 動作しません */
-
+/* この例は、someserverで .php を処理するように設定されており、.txt に
+ * ついては設定されていないことを仮定しています。また、ここでの'動作す
+ * る'という意味は、変数 $varoneと$vartwoがinclude()で読み込まれたファ
+ * イルで利用であることを意味します。*/
+
+/* 動作せず; file.txt は someserverで処理されない。 */
+include ("http://someserver/file.txt?varone=1&vartwo=2");
+
+/* 動作せず; ローカルファイルシステムの'file.php?varone=1&vartwo=2'
+ * という名前のファイルを探す。 */
+include ("file.php?varone=1&vartwo=2");
+
+/* 動作する。 */
+include ("http://someserver/file.php?varone=1&vartwo=2");
+
$varone = 1;
$vartwo = 2;
-include ("file.inc"); /* $varoneおよび$vartwoはfile.incで利用可能です */
+include ("file.txt"); /* 動作する。 */
+include ("file.php"); /* 動作する。 */
</programlisting>
</informalexample>
- </para>
- <simpara>
- <link linkend="features.remote-files">リモートファイル</link>機能により
- HTTP経由でrequireやincludeによるファイルの読み込めることと誤解しないで
- 下さい。その場合は、可能です。
- </simpara>
+ </para>
<simpara>
<function>require</function>, <function>require_once</function>,
<function>include_once</function>, <function>readfile</function>,
Index: phpdoc/ja/language/variables.xml
diff -u phpdoc/ja/language/variables.xml:1.3 phpdoc/ja/language/variables.xml:1.4
--- phpdoc/ja/language/variables.xml:1.3 Mon Jul 10 16:08:38 2000
+++ phpdoc/ja/language/variables.xml Sun Aug 20 00:58:59 2000
@@ -1,9 +1,9 @@
<chapter id="language.variables">
<title>変数</title>
-
+
<sect1 id="language.variables.basics">
<title>基本的な事</title>
-
+
<simpara>
PHP の変数はドル記号の後に変数名が続く形式で表されます。
変数名は大文字小文字を区別します。
@@ -370,19 +370,19 @@
<term>PATH_TRANSLATED</term>
<listitem>
<simpara>
- サーバーが仮想的なパスを実際のパスへ変換した後で、
- 現在のスクリプトの(ドキュメントルートではなく)ファイルシステムに
- 基づくパス。
+ サーバーが仮想的なパスを実際のパスへ変換した後で、
+ 現在のスクリプトの(ドキュメントルートではなく)ファイルシステムに
+ 基づくパス。
</simpara>
</listitem>
</varlistentry>
-
+
<varlistentry>
<term>SCRIPT_NAME</term>
<listitem>
<simpara>
- 現在のスクリプトのパスを有します。自分自身を指す必要があるページ
- では便利です。
+ 現在のスクリプトのパスを有します。自分自身を指す必要があるページ
+ では便利です。
</simpara>
</listitem>
</varlistentry>
@@ -405,17 +405,16 @@
<title>環境変数</title>
<simpara>
- これらの変数は、PHPパーサが実行されている環境から
- PHP のグローバル変数領域にインポートされます。
- その多くは、PHPを実行したシェルにより提供されたものであり、
- システムが異なると恐らくシェルの種類も異なるので、固定したリストを
- 示すことはできません。定義済みの環境変数のリストについては、
- 使用するシェルのドキュメントを参照下さい。
+ これらの変数は、PHPパーサが実行されている環境からPHPのグローバル
+ 変数領域にインポートされます。その多くは、PHPを実行したシェルによ
+ り提供されたものであり、システムが異なると恐らくシェルの種類も異
+ なるので、固定したリストを示すことはできません。定義済みの環境変
+ 数のリストについては、使用するシェルのドキュメントを参照下さい。
</simpara>
<simpara>
- CGI変数を含む他の環境変数は、PHPがサーバーモジュールとして実行
- されているのか、CGIプロセッサとして実行されているのかに
- よらず設定されます。
+ CGI変数を含む他の環境変数は、PHPがサーバーモジュールとして実行さ
+ れているのか、CGIプロセッサとして実行されているのかによらず設定さ
+ れます。
</simpara>
</sect2>
@@ -433,10 +432,10 @@
<term>argv</term>
<listitem>
<simpara>
- スクリプトに渡される引数の配列。
- スクリプトがコマンドラインで実行された場合、これにより、
- C言語の形式でコマンドラインのパラメータにアクセスすることができます。
- GETメソッドでコールされた場合、この配列にはクエリー文字列が含まれます。
+ スクリプトに渡される引数の配列。スクリプトがコマンドラインで
+ 実行された場合、これにより、C言語の形式でコマンドラインのパラ
+ メータにアクセスすることができます。GETメソッドでコールされた
+ 場合、この配列にはクエリー文字列が含まれます。
</simpara>
</listitem>
</varlistentry>
@@ -445,8 +444,8 @@
<term>argc</term>
<listitem>
<simpara>
- スクリプトに渡されたコマンドラインパラメータの数を有しています。
- (コマンドラインで実行された場合)
+ スクリプトに渡されたコマンドラインパラメータの数を有しています。
+ (コマンドラインで実行された場合)
</simpara>
</listitem>
</varlistentry>
@@ -455,9 +454,9 @@
<term>PHP_SELF</term>
<listitem>
<simpara>
- 現在実行しているスクリプトのドキュメントルートに相対パスで表したファイル名。
- PHPがコマンドラインプロセッサとして実行されている場合、
- この変数は利用できません。
+ 現在実行しているスクリプトのドキュメントルートに相対パスで表し
+ たファイル名。PHPがコマンドラインプロセッサとして実行されてい
+ る場合、この変数は利用できません。
</simpara>
</listitem>
</varlistentry>
@@ -466,10 +465,13 @@
<term>HTTP_COOKIE_VARS</term>
<listitem>
<simpara>
- HTTPクッーにより現在のスクリプトに渡された変数を有する連想配列。
- 設定ディレクティブ <link linkend="ini.track-vars">track_vars</link>
- または <computeroutput><?php_track_vars?></computeroutput>
- ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ利用可能です。
+ HTTPクッキーにより現在のスクリプトに渡された変数を有する連想配
+ 列。設定ディレクティブ
+ <link linkend="ini.track-vars">track_vars</link>
+ または
+ <computeroutput><?php_track_vars?></computeroutput>
+ ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ
+ 利用可能です。
</simpara>
</listitem>
</varlistentry>
@@ -478,10 +480,12 @@
<term>HTTP_GET_VARS</term>
<listitem>
<simpara>
- HTTP GETメソッドにより現在のスクリプトに渡された変数を有する連想配列。
- 設定ディレクティブ <link linkend="ini.track-vars">track_vars</link>
- または <computeroutput><?php_track_vars?></computeroutput>
- ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ利用可能です。
+ HTTP GETメソッドにより現在のスクリプトに渡された変数を有する
+ 連想配列。設定ディレクティブ
+ <link linkend="ini.track-vars">track_vars</link>
+ または<computeroutput><?php_track_vars?></computeroutput>
+ ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ
+ 利用可能です。
</simpara>
</listitem>
</varlistentry>
@@ -490,10 +494,12 @@
<term>HTTP_POST_VARS</term>
<listitem>
<simpara>
- HTTP POSTメソッドにより現在のスクリプトに渡された変数を有する連想配列。
- 設定ディレクティブ <link linkend="ini.track-vars">track_vars</link>
- または <computeroutput><?php_track_vars?></computeroutput>
- ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ利用可能です。
+ HTTP POSTメソッドにより現在のスクリプトに渡された変数を有する
+ 連想配列。設定ディレクティブ
+ <link linkend="ini.track-vars">track_vars</link>または
+ <computeroutput><?php_track_vars?></computeroutput>
+ ディレクティブのどちらかにより変数の追跡機能が有効の場合のみ
+ 利用可能です。
</simpara>
</listitem>
</varlistentry>
@@ -503,33 +509,29 @@
</sect2>
</sect1>
-
- <sect1 id="language.variables.scope">
- <title>変数のスコープ</title>
-
- <simpara>
- 変数のスコープは、その変数が定義されたコンテキストです。
- ほとんどの PHP 変数は、スコープを1つだけ有しています。
- このスコープの範囲は、includeやrequireにより読みこまれたファイルも
- 含みます。例えば、
- </simpara>
- <informalexample>
+
+ <sect1 id="language.variables.scope">
+ <title>変数のスコープ</title>
+
+ <simpara>
+ 変数のスコープは、その変数が定義されたコンテキストです。ほとんどの
+ PHP 変数は、スコープを1つだけ有しています。このスコープの範囲は、
+ includeやrequireにより読みこまれたファイルも含みます。例えば、
+ </simpara>
+ <informalexample>
<programlisting role="php">
$a = 1;
include "b.inc";
</programlisting>
</informalexample>
<simpara>
-
- この例で、変数$aはインクルードされた b.inc スクリプトの中でも
- 利用可能です。
- しかし、ユーザー定義の関数の中では変数の有効範囲はローカル関数の中となります。
- 関数の中で使用された変数はデフォルトで有効範囲が関数内部に制限されます。
- 例えば、
+ この例で、変数$aはインクルードされた b.inc スクリプトの中でも利用
+ 可能です。しかし、ユーザー定義の関数の中では変数の有効範囲はローカ
+ ル関数の中となります。関数の中で使用された変数はデフォルトで有効範
+ 囲が関数内部に制限されます。例えば、
</simpara>
-
- <informalexample>
- <programlisting role="php">
+ <informalexample>
+ <programlisting role="php">
$a = 1; /* グローバルスコープ */
Function Test () {
@@ -537,24 +539,20 @@
}
Test ();
- </programlisting>
- </informalexample>
-
- <simpara>
- このスクリプトは、出力を全く行いません。
- これは、echo 命令がローカル版の $a 変数を参照しているにもかかわらず、
- このスコープでは値が代入されていないからです。
- この動作は、特にローカルな定義で上書きしない限りグローバル変数が
- 自動的に関数で使用可能である C 言語と少々異なっていると気がつかれる
- かもしれません。
- C 言語のような場合、グローバル変数を不注意で変更してしまう
- という問題を生じる可能性があります。
- PHP では、グローバル変数は、関数の内部で使用する場合、
- 関数の内部でグローバルとして宣言する必要があります。
- 例を以下に示します。</simpara>
-
- <informalexample>
- <programlisting role="php">
+ </programlisting>
+ </informalexample>
+ <simpara>
+ このスクリプトは、出力を全く行いません。これは、echo 命令がローカ
+ ル版の $a 変数を参照しているにもかかわらず、このスコープでは値が代
+ 入されていないからです。この動作は、特にローカルな定義で上書きしな
+ い限りグローバル変数が自動的に関数で使用可能である C 言語と少々異
+ なっていると気がつかれるかもしれません。C言語のような場合、グロー
+ バル変数を不注意で変更してしまうという問題を生じる可能性があります。
+ PHP では、グローバル変数は、関数の内部で使用する場合、関数の内部で
+ グローバルとして宣言する必要があります。例を以下に示します。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
$a = 1;
$b = 2;
@@ -566,23 +564,21 @@
Sum ();
echo $b;
- </programlisting>
- </informalexample>
-
- <simpara>
- 上のスクリプトは、"3" を出力します。
- 関数の内部で $a、$b をグローバル宣言を行うことにより、
- 両変数への参照は、グローバル変数の方を参照することになります。
- ある関数により操作できるグローバル変数の数は無制限です。
- </simpara>
-
- <simpara>
- グローバルスコープから変数をアクセスする2番目の方法は、
- PHP が定義する $GLOBALS 配列を使用することです。
- 先の例は、次のように書き換えることができます。</simpara>
-
- <informalexample>
- <programlisting role="php">
+ </programlisting>
+ </informalexample>
+ <simpara>
+ 上のスクリプトは、"3" を出力します。関数の内部で $a、$b
+ をグローバル宣言を行うことにより、両変数への参照は、グローバル変数
+ の方を参照することになります。ある関数により操作できるグローバル変
+ 数の数は無制限です。
+ </simpara>
+ <simpara>
+ グローバルスコープから変数をアクセスする2番目の方法は、PHPが定義す
+ る $GLOBALS 配列を使用することです。先の例は、次のように書き換える
+ ことができます。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
$a = 1;
$b = 2;
@@ -592,67 +588,58 @@
Sum ();
echo $b;
- </programlisting>
- </informalexample>
-
- <simpara>
- $GLOBALS 配列は連想配列であり、グローバル変数の名前がキー、その変数の内容が
- 配列要素の値となっています。
+ </programlisting>
+ </informalexample>
+ <simpara>
+ $GLOBALS 配列は連想配列であり、グローバル変数の名前がキー、その変
+ 数の内容が配列要素の値となっています。
</simpara>
-
- <simpara>
- 変数のスコープに関する別の重要な機能は、
- <emphasis>静的(static)</emphasis> 変数です。
- 静的変数はローカル関数スコープのみに存在しますが、
- プログラム実行がこのスコープの外で行われるようになっても
- その値を失わないません。
- 次の例を見てください。</simpara>
-
- <informalexample>
- <programlisting>
+ <simpara>
+ 変数のスコープに関する別の重要な機能は、<emphasis>静的
+ (static)</emphasis> 変数です。静的変数はローカル関数スコープのみに
+ 存在しますが、プログラム実行がこのスコープの外で行われるようになっ
+ てもその値を失わないません。次の例を見てください。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
Function Test () {
$a = 0;
echo $a;
$a++;
}
- </programlisting>
- </informalexample>
-
- <simpara>
- この関数は、コールされる度に $a を 0 にセットし、"0" を出力するので
- ほとんど役にたちません。
- 変数を1 増やす $a++ は、関数から外に出ると $a 変数が消えてしまうために
- 目的を達成しません。
- 現在のカウントの追跡ができるようにカウント関数を使用できるようにするためには、
- $a 変数を静的に宣言します。</simpara>
-
- <informalexample>
- <programlisting role="php">
+ </programlisting>
+ </informalexample>
+ <simpara>
+ この関数は、コールされる度に $a を 0 にセットし、"0" を
+ 出力するのでほとんど役にたちません。変数を1増やす $a++ は、関数か
+ ら外に出ると $a 変数が消えてしまうために目的を達成しません。現在の
+ カウントの追跡ができるようにカウント関数を使用できるようにするため
+ には、$a 変数を静的に宣言します。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
Function Test () {
static $a = 0;
echo $a;
$a++;
}
- </programlisting>
- </informalexample>
-
- <simpara>
- こうすると、Test() 関数が呼ばれる度に、$a の値を出力し、
- その値を増加させます。
- </simpara>
-
- <simpara>
- 静的変数は、再帰関数を実現する1つの手段としても使用されます。
- 再帰関数は、自分自身をコールする関数です。
- 再帰関数を書くときには、無限に再帰を行う可能性があるため、
- 注意する必要があります。
- 適当な方法により再帰を確実に終了させる必要があります。
- 次の簡単な関数は、中止するタイミングを知るために静的変数 $count を用いて、
- 10 回まで再帰を行います。
- </simpara>
+ </programlisting>
+ </informalexample>
+ <simpara>
+ こうすると、Test() 関数が呼ばれる度に $a の値を出力し、その値を増
+ 加させます。
+ </simpara>
+ <simpara>
+ 静的変数は、再帰関数を実現する1つの手段としても使用されます。再帰
+ 関数は、自分自身をコールする関数です。再帰関数を書くときには、無限
+ に再帰を行う可能性があるため、注意する必要があります。適当な方法に
+ より再帰を確実に終了させる必要があります。次の簡単な関数は、中止す
+ るタイミングを知るために静的変数 $count を用いて、10 回まで再帰を
+ 行います。
+ </simpara>
- <informalexample>
- <programlisting role="php">
+ <informalexample>
+ <programlisting role="php">
Function Test () {
static $count = 0;
@@ -663,117 +650,103 @@
}
$count--;
}
- </programlisting>
- </informalexample>
+ </programlisting>
+ </informalexample>
- </sect1>
+ </sect1>
- <sect1 id="language.variables.variable">
- <title>可変変数</title>
+ <sect1 id="language.variables.variable">
+ <title>可変変数</title>
- <simpara>
- 変数名を可変にできると便利なことが時々あります。
- 可変変数では、変数名を動的にセットし使用できます。
- 通常の変数は、次のような命令でセットします。
+ <simpara>
+ 変数名を可変にできると便利なことが時々あります。可変変数では、変数
+ 名を動的にセットし使用できます。通常の変数は、次のような命令でセッ
+ トします。
</simpara>
-
- <informalexample>
- <programlisting role="php">
+ <informalexample>
+ <programlisting role="php">
$a = "hello";
- </programlisting>
- </informalexample>
-
- <simpara>
- 可変変数は、変数の値をとり、変数の名前として扱います。
- 上の例では、<emphasis>hello</emphasis> は、ドル記号を
- 二つ使用することにより、変数の名前として使用することができます。
- つまり、
- </simpara>
-
- <informalexample>
- <programlisting role="php">
+ </programlisting>
+ </informalexample>
+ <simpara>
+ 可変変数は、変数の値をとり、変数の名前として扱います。上の例では、
+ <emphasis>hello</emphasis> は、ドル記号を二つ使用することにより、
+ 変数の名前として使用することができます。つまり、
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
$$a = "world";
- </programlisting>
- </informalexample>
-
- <simpara>
- ここまでで、二つの変数が定義され、PHP シンボルツリーに定義されています。
- これらは、"hello" を値とする $a と "world" を値とする $hello です。
- そこで、次の命令、
- </simpara>
+ </programlisting>
+ </informalexample>
- <informalexample>
- <programlisting>
+ <simpara>
+ ここまでで、二つの変数が定義され、PHP シンボルツリーに定義されてい
+ ます。これらは、"hello" を値とする $a と "world" を値とする $hello
+ です。そこで、次の命令、
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
echo "$a ${$a}";
- </programlisting>
- </informalexample>
-
- <simpara>
- の出力は、次の命令と全く同じとなります。</simpara>
-
- <informalexample>
- <programlisting>
+ </programlisting>
+ </informalexample>
+ <simpara>
+ の出力は、次の命令と全く同じとなります。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
echo "$a $hello";
- </programlisting>
- </informalexample>
-
- <simpara>
- すなわち、両方共、<emphasis>hello world</emphasis>
- を出力します。
- </simpara>
+ </programlisting>
+ </informalexample>
+ <simpara>
+ すなわち、両方共、<emphasis>hello world</emphasis>を出力します。
+ </simpara>
+ <simpara>
+ 可変変数を配列で使用する際には、曖昧さの問題を解決する必要がありま
+ す。つまり、$$a[1] と書いた場合、$a[1] を変数として使用したいのか、
+ $$a を変数とし [1] を変数の添え字としたいのかを、パーサが知る必要
+ があるのです。この曖昧さを解決するには、前者では ${$a[1]} とし、後
+ 者では ${$a}[1] とする構文を用います。
+ </simpara>
- <simpara>
- 可変変数を配列で使用する際には、曖昧さの問題を解決する必要があります。
- つまり、$$a[1] と書いた場合、$a[1] を変数として使用したいのか、
- $$a を変数とし [1] を変数の添え字としたいのかを、パーサが知る必要が
- あるのです。
- この曖昧さを解決するには、前者では ${$a[1]} とし、
- 後者では ${$a}[1] とする構文を用います。
+ </sect1>
+
+ <sect1 id="language.variables.external">
+ <title>PHPの外部から来る変数</title>
+
+ <sect2 id="language.variables.external.form">
+ <title>HTML フォーム (GET と POST)</title>
+
+ <simpara>
+ フォームが PHP スクリプトに投稿された時、フォームから渡された全て
+ の変数は PHP により自動的にスクリプトから使用可能となります。例え
+ ば、次のフォームを見てみましょう。
</simpara>
-
- </sect1>
-
- <sect1 id="language.variables.external">
- <title>PHPの外部から来る変数</title>
-
- <sect2 id="language.variables.external.form">
- <title>HTML フォーム (GET と POST)</title>
-
- <simpara>
- フォームが PHP スクリプトに投稿された時、フォームから渡された
- 全ての変数は PHP により自動的にスクリプトから使用可能となります。
- 例えば、次のフォームを見てみましょう。
- </simpara>
-
- <para>
- <example>
- <title>単なフォーム変数</title>
- <programlisting role="php">
+ <para>
+ <example>
+ <title>単なフォーム変数</title>
+ <programlisting role="php">
<form action="foo.php3" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
- </programlisting>
- </example>
- </para>
-
- <simpara>
- 投稿された際、PHP は変数
- <computeroutput>$name</computeroutput> を作成します。
- この変数の値は、フォーム上で <emphasis>Name:</emphasis> フィールドに
- 入力されたものとなっています。
- </simpara>
-
- <simpara>
- PHP は、フォーム変数における配列も解釈しますが、
- 一次元のみとなります。
- この機能は、例えば、関連する変数をグループ化したり、複数の入力値が
- 選択された際に値を取り出すために使用します。</simpara>
-
- <para>
+ </programlisting>
+ </example>
+ </para>
+ <simpara>
+ 投稿された際、PHP は変数<computeroutput>$name</computeroutput>を
+ 作成します。この変数の値は、フォーム上で
+ <emphasis>Name:</emphasis> フィールドに入力されたものとなっていま
+ す。
+ </simpara>
+ <simpara>
+ PHP は、フォーム変数における配列も解釈しますが、一次元のみとなり
+ ます。この機能は、例えば、関連する変数をグループ化したり、複数の
+ 入力値が選択された際に値を取り出すために使用します。
+ </simpara>
+ <para>
<example>
<title>より複雑なフォーム変数</title>
- <programlisting>
+ <programlisting>
<form action="array.php" method="post">
Name: <input type="text" name="personal[name]"><br>
Email: <input type="text" name="personal[email]"><br>
@@ -785,161 +758,153 @@
</select>
<input type="submit">
</form>
- </programlisting>
- </example>
- </para>
-
- <simpara>
- <link linkend="ini.track-vars">track_vars</link> の設定または
- <computeroutput><?php_track_vars?></computeroutput> 命令により
- PHP の track_vars 機能がオンにされた場合、POST または GET
- メソッドにより投稿された変数は、それぞれグローバル連想配列
- $HTTP_POST_VARS および $HTTP_GET_VARS よりアクセスできます。
- </simpara>
+ </programlisting>
+ </example>
+ </para>
+ <simpara>
+ <link linkend="ini.track-vars">track_vars</link> の設定または
+ <computeroutput><?php_track_vars?></computeroutput> 命令により
+ PHP の track_vars 機能がオンにされた場合、POST または GET
+ メソッドにより投稿された変数は、それぞれグローバル連想配列
+ $HTTP_POST_VARS および $HTTP_GET_VARS よりアクセスできます。
+ </simpara>
- <sect3>
- <title>IMAGE SUBMIT 変数名</title>
-
- <simpara>
- フォームを投稿する際、次のタグのように標準の投稿ボタンの代わりに
- 画像を使用することができます。</simpara>
-
- <informalexample>
- <programlisting role="php">
-<input type=image src="image.gif" name="sub">
- </programlisting>
- </informalexample>
-
- <simpara>
- 画像のどこかがクリックされた場合、二つの変数 sub_x および sub_y が
- 付け加えられてこのフォームはサーバーに転送されます。
- これらの変数は、ユーザーがこの画像をクリックした座標を示しています。
- 経験のある人は、ブラウザにより送られた変数の名前においてアンダースコアが
- ピリオドになってしまっていることに注意するかもしれません。
- しかし、PHP はピリオドをアンダースコアに自動的に変換します。</simpara></sect3></sect2>
-
- <sect2 id="language.variables.external.cookies">
- <title>HTTP クッキー</title>
-
+ <sect3>
+ <title>IMAGE SUBMIT 変数名</title>
<simpara>
- PHP は、<ulink url="&spec.cookies;">
- Netscape の規約</ulink> に定義されたHTTP クッキーを完全に
- サポートします。
- クッキーは、リモートブラウザにデータを保持し、再訪するユーザーを追跡し、
- 特定する機構です。
- <function>SetCookie</function> 関数によりクッキーをセットすることが
- できます。クッキーは、HTTP ヘッダの一部なので、
- SetCookie 関数をブラウザに何かを出力する前にコールする必要が
- あります。
- この制約は、<function>Header</function> 関数のものと同じです。
- クライアントから送られる全てのクッキーは、GET や POST メソッドの
- データと全く同じように自動的に PHP 変数に変換されます。</simpara>
-
- <simpara>
- 単一のクッキーに複数の値を代入したい場合は、
- <emphasis>[]</emphasis> をクッキー名に付けてください。
- 以下に例を示します。
+ フォームを投稿する際、次のタグのように標準の投稿ボタンの代わりに
+ 画像を使用することができます。
</simpara>
-
<informalexample>
<programlisting role="php">
-SetCookie ("MyCookie[]", "Testing", time()+3600);
+<input type=image src="image.gif" name="sub">
</programlisting>
</informalexample>
-
<simpara>
- クッキーは、パスまたはドメインが異ならない限り、
- 以前のクッキーをブラウザ上の同じ名前の変数に置き換えることに
- 注意してください。
- さて、買い物篭(Shopping Cart) プログラムの場合、カウンタを保持し、
- 受け渡したいと思うかもしれません。
- これは、次のようになります。</simpara>
+ 画像のどこかがクリックされた場合、二つの変数 sub_x および sub_y
+ が付け加えられてこのフォームはサーバーに転送されます。これらの変
+ 数は、ユーザーがこの画像をクリックした座標を示しています。経験の
+ ある人は、ブラウザにより送られた変数の名前においてアンダースコア
+ がピリオドになってしまっていることを心配するかもしれません。
+ しかし、PHP はピリオドをアンダースコアに自動的に変換します。
+ </simpara>
+ </sect3>
+ </sect2>
- <example>
- <title>SetCookie の例</title>
- <programlisting role="php">
+ <sect2 id="language.variables.external.cookies">
+ <title>HTTP クッキー</title>
+ <simpara>
+ PHP は、<ulink url="&spec.cookies;">Netscape の規約</ulink> に定
+ 義されたHTTP クッキーを完全にサポートします。クッキーは、リモート
+ ブラウザにデータを保持し、再訪するユーザーを追跡し、特定する機構
+ です。<function>SetCookie</function> 関数によりクッキーをセットす
+ ることができます。クッキーは、HTTP ヘッダの一部なので、SetCookie
+ 関数をブラウザに何かを出力する前にコールする必要があります。
+ この制約は、<function>Header</function> 関数のものと同じです。
+ クライアントから送られる全てのクッキーは、GET や POST メソッドの
+ データと全く同じように自的に PHP 変数に変換されます。
+ </simpara>
+ <simpara>
+ 単一のクッキーに複数の値を代入したい場合は、
+ <emphasis>[]</emphasis> をクッキー名に付けてください。以下に例を
+ 示します。
+ </simpara>
+ <informalexample>
+ <programlisting role="php">
+SetCookie ("MyCookie[]", "Testing", time()+3600);
+ </programlisting>
+ </informalexample>
+ <simpara>
+ クッキーは、パスまたはドメインが異ならない限り、
+ 以前のクッキーをブラウザ上の同じ名前の変数に置き換えることに
+ 注意してください。
+ さて、買い物篭(Shopping Cart) プログラムの場合、カウンタを保持し、
+ 受け渡したいと思うかもしれません。
+ これは、次のようになります。
+ </simpara>
+ <example>
+ <title><function>SetCookie</function>の例</title>
+ <programlisting role="php">
$Count++;
SetCookie ("Count", $Count, time()+3600);
SetCookie ("Cart[$Count]", $item, time()+3600);
- </programlisting>
- </example></sect2>
-
- <sect2 id="language.variables.external.environment">
- <title>環境変数</title>
+ </programlisting>
+ </example>
+ </sect2>
- <para>
+ <sect2 id="language.variables.external.environment">
+ <title>環境変数</title>
+
+ <para>
PHP は、環境変数を自動的に通常の PHP 変数として使用可能とします。
-
<informalexample>
<programlisting>
echo $HOME; /* 環境変数 HOME が設定されている場合、表示します。 */
</programlisting>
- </informalexample></para>
+ </informalexample>
+ </para>
- <para>
- 情報は、GET、POST、Cookie からも自動的に来るため、
- 意図した種類の変数を確実に得るために環境変数から変数を明示的に
- 取得する方が好ましいということが時々あります。
- <function>getenv</function> 関数をこのために使用することができます。
- 環境変数を <function>putenv</function> 関数でセットすることもできます。
- </para>
- </sect2>
+ <para>
+ 情報は、GET、POST、Cookie からも自動的に来るため、意図した種類の
+ 変数を確実に得るために環境変数から変数を明示的に取得する方が好ま
+ しいということが時々あります。<function>getenv</function> 関数を
+ このために使用することができます。環境変数を
+ <function>putenv</function> 関数で設定することもできます。
+ </para>
+ </sect2>
- <sect2>
+ <sect2>
<title>外部変数名のドット</title>
-
+
<para>
- 通常、PHP はスクリプトに渡された変数の名前を変更しません。
- しかし、ドット(ピリオド、終止符)はPHPの変数名で有効な文字ではないということに
- 注意する必要があります。次の例を見てみましょう。
- <programlisting role="php">
- $varname.ext; /* 無効な変数名 */
- </programlisting>
- ここで、パーサは、 $varname という名前の変数の後に文字列結合演算子があり、
- その後に、裸の文字列(すなわち、既知のキーまたは予約語にマッチしない
- 引用符無しの文字列) 'ext' が続くとして解釈します。この場合、明らかに
- 意図する結果にはなりません。
+ 通常、PHP はスクリプトに渡された変数の名前を変更しません。しかし、
+ ドット(ピリオド、終止符)はPHPの変数名で有効な文字ではないというこ
+ とに注意する必要があります。次の例を見てみましょう。
+ <programlisting role="php">
+$varname.ext; /* 無効な変数名 */
+ </programlisting>
+ ここで、パーサは、 $varname という名前の変数の後に文字列結合演算
+ 子があり、その後に、裸の文字列(すなわち、既知のキーまたは予約語に
+ マッチしない引用符無しの文字列) 'ext' が続くとして解釈します。こ
+ の場合、明らかに意図する結果にはなりません。
</para>
-
<para>
- 重要なことを記述しておくと、このため、外部変数に含まれるドットを PHP は自動的に
- アンダースコアに変換します。
+ 重要なことを記述しておくと、このため、外部変数に含まれるドットを
+ PHP は自動的にアンダースコアに変換します。
</para>
-
+
</sect2>
<sect2>
- <title>変数の型の定義</title>
-
- <para>
- PHP は、変数の型を定義し、必要に応じて変換します。
- このため、ある変数の型がある時点で常に明らかであるわけではありません。
- PHPは、変数の型を調べる複数の関数をサポートしています。
- それらは、
- <function>gettype</function>, <function>is_long</function>,
- <function>is_double</function>, <function>is_string</function>,
- <function>is_array</function>,
- <function>is_object</function> です。
- </para>
- </sect2>
-
- </sect1>
+ <title>変数の型の定義</title>
+ <para>
+ PHPは、変数の型を定義し、必要に応じて変換します。このため、ある変
+ 数の型がある時点で常に明らかであるわけではありません。PHPは、変数
+ の型を調べる複数の関数をサポートしています。それらは、
+ <function>gettype</function>, <function>is_long</function>,
+ <function>is_double</function>, <function>is_string</function>,
+ <function>is_array</function>,
+ <function>is_object</function> です。
+ </para>
+ </sect2>
+
+ </sect1>
- </chapter>
+ </chapter>
- <!-- 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
- sgml-parent-document:nil
- sgml-default-dtd-file:"../../manual.ced"
- sgml-exposed-tags:nil
- sgml-local-catalogs:nil
- sgml-local-ecat-files:nil
- End:
- -->
+<!-- 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
+sgml-parent-document:nil
+sgml-default-dtd-file:"../../manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
Index: phpdoc/ja/language/references.xml
+++ phpdoc/ja/language/references.xml
<chapter id="language.references">
<title>リファレンスの説明</title>
<sect1 id="language.references.whatare">
<title>リファレンスとは?</title>
<simpara>
PHPにおいてリファレンスは、同じ変数の内容を異なった名前でコールす
ることを意味します。これはCポインタのようなものではなく、シンボル
テーブルのエイリアスです。PHPでは、変数名と変数の内容は異なってお
り、このため、同じ内容は異なった複数の名前を有する事が可能である
ことに注意して下さい。最も良く似ているのは、UNIXのファイル名とファ
イルの関係です。この場合、変数名はディレクトリエントリ、変数の内
容はファイル自体に対応します。リファレンスは、UNIXファイルシステ
ムのハードリンクのようなものであると考えられます。
</simpara>
</sect1>
<sect1 id="language.references.whatdo">
<title>リファレンスが行うことは何ですか?</title>
<para>
PHPのリファレンスにより二つの変数が同じ内容を参照することが可能で
す。つまり、以下のようなものを実行した場合です。
<informalexample>
<programlisting role="php">
$a =& $b
</programlisting>
</informalexample>
この場合、<varname>$a</varname>と<varname>$b</varname>は同じ変数を
指します。
<note>
<para>
ここで、<varname>$a</varname>と<varname>$b</varname>は完全に同じ
で、<varname>$a</varname>が<varname>$b</varname>を指しているわけ
ではなく、その逆でもありません。<varname>$a</varname>と
<varname>$b</varname>は同じ場所を指しているのです。
</para>
</note>
</para>
<para>
リファレンスの第2の使用法は、変数のリファレンス渡しです。この場合、
関数でローカル変数が作成され、コール側の変数と同じ内容へのリファレ
ンスとなります。例を示します。
<informalexample>
<programlisting role="php">
function foo(&$var) {
$var++;
}
$a=5;
foo($a);
</programlisting>
</informalexample>
この結果、<varname>$a</varname> は 6となります。
</para>
</sect1>
<sect1 id="language.references.arent">
<title>リファレンスが行わないことは?</title>
<para>
上記のように、リファレンスはポインタではありません。このため、次の
例は期待通りに動作しません。
<informalexample>
<programlisting role="php">
function foo(&$var) {
$var =& $GLOBALS["baz"];
}
foo($bar);
</programlisting>
</informalexample>
</para>
<simpara>
ここでの動作としては、関数fooの<varname>$var</varname>はコール側の
<varname>$bar</varname>と結合されますが、
<varname>$GLOBALS["baz"]</varname>に再結合されるといったものになり
ます。<varname>$bar</varname>は関数fooで利用できないため、リファレ
ンス以外にはコール側の<varname>$bar</varname>を何かに結合する手段
はありません。(この変数は、<varname>$var</varname>として表されてい
ますが、<varname>$var</varname>はその変数の内容のみを有しており、
名前と変数を結合したものではありません。)
</simpara>
</sect1>
<sect1 id="language.references.return">
<title>リファレンスを返す</title>
<para>
リファレンスを返すことは、結合する変数を見付けるために関数を使用し
たい場合に便利です。リファレンスを返す場合、次の構文を使用して下さ
い。
<informalexample>
<programlisting role="php">
function &find_var($param) {
...コード...
return $found_var;
}
$foo =& find_var($bar);
</programlisting>
</informalexample>
</para>
<note>
<simpara>
パラメータを渡す場合と異なり、ここでは、両方で & を使用します。
</simpara>
</note>
</sect1>
<sect1 id="language.references.unset">
<title>リファレンスの削除</title>
<para>
リファレンスを削除することは、ちょうど変数名と変数の内容の結合を解
除したことに相当します。これは、変数の内容が破棄されることを意味し
ません。例えば、
<informalexample>
<programlisting role="php">
$a = 1;
$b =& $a;
unset($a);
</programlisting>
</informalexample>
は、<varname>$b</varname>を削除せず、<varname>$a</varname>のみを削
除します。
</para>
<simpara>
ここでも、UNIXのunlinkコールと類似したものと考えると便利です。
</simpara>
</sect1>
<sect1 id="language.references.spot">
<title>リファレンスの適用範囲</title>
<simpara>
PHPの多くの構文構造は、リファレンス機構を利用して実装されています。
このため、前記のリファレンス結合に関する事項はこれらの構造について
も適用されます。リファレンス渡しおよびリファレンスの返り値のような
いくつかの構造について前節で記述されています。リファレンスを使用す
る他の構造には次のものがあります。
</simpara>
<sect2 id="references.global">
<title><literal>global</literal></title>
<para>
変数を<command>global $var</command>として宣言した場合、実際には
グローバル変数へのリファレンスを作成したことになります。この意味
は、次の例と同じです。
<informalexample>
<programlisting role="php">
$var =& $GLOBALS["var"];
</programlisting>
</informalexample>
</para>
<simpara>
これは、例えば、<varname>$var</varname>を削除してもグローバル変数
は削除されないことを意味します。
</simpara>
</sect2>
<sect2 id="references.this">
<title><literal>$this</literal></title>
<simpara>
オブジェクトのメソッドでは、<varname>$this</varname> は常にコール
側のオブジェクトへのリファレンスです。
</simpara>
</sect2>
</sect1>
</chapter>
<!-- 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
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
- Next message: Rui Hirokawa: "[PHP-DOC] cvs: phpdoc /ja/functions filesystem.xml info.xml network.xml pgsql.xml"
- Previous message: Lars Torben Wilson: "[PHP-DOC] Manual structure (was: [PHP-DOC] Re: "waldschrotts guide to nifty references")"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

