PHP マニュアル
前のページ | 第 46章Zend API: PHP のコアをハックする | 次のページ

# 値を返す

あなたの関数から PHP に値を返す方法については、既に簡単に説明しました。 ここではより詳細に説明します。返り値は `return_value` 変数を用いて渡されます。この変数は関数の引数として渡されたものです。 `return_value` 引数は `zval` コンテナで構成されており (前の章の呼び出しインターフェイスのところを参照ください)、 自由に変更することができます。コンテナ自身はすでに割り当て済みなので、 改めて `MAKE_STD_ZVAL` を実行する必要はありません。 その内容に直接アクセスすることが可能です。

関数から返す値を作成しやすくするため、そして `zval` コンテナの内部構造にアクセスしやすくするために、 いくつかのマクロが定義されています。 表46-14 および 表46-15 にまとめたこれらのマクロは、対応する型と値を自動的に設定します。

> 注意: 表46-14 のマクロは、自動的に関数から値を return します。一方 表46-15 のマクロは単に値を 設定する だけです。関数から値を返すことはありません。

表 46-14. 関数から値を返すための、定義済みマクロ

マクロ | 説明
`RETURN_RESOURCE(resource)` | リソースを返します。
`RETURN_BOOL(bool)` | Boolean を返します。
`RETURN_NULL()` | 何も返しません (NULL 値を返します)。
`RETURN_LONG(long)` | long を返します。
`RETURN_DOUBLE(double)` | double を返します。
`RETURN_STRING(string, duplicate)` | 文字列を返します。`duplicate` フラグでは、 estrdup() を使用して文字列を複製するかどうかを指定します。
`RETURN_STRINGL(string, length, duplicate)` | 指定した長さの文字列を返します。それ以外の振る舞いは `RETURN_STRING` と同じです。 しかし、このマクロは高速でバイナリセーフです。
`RETURN_EMPTY_STRING()` | 空の文字列を返します。
`RETURN_FALSE` | false を返します。
`RETURN_TRUE` | true を返します。

表 46-15. 関数の返り値を設定するための、定義済みマクロ

マクロ | 説明
`RETVAL_RESOURCE(resource)` | 指定したリソースを返り値に設定します。
`RETVAL_BOOL(bool)` | 指定した Boolean 値を返り値に設定します。
`RETVAL_NULL` | NULL を返り値に設定します。
`RETVAL_LONG(long)` | 指定した long 値に返り値を設定します。
`RETVAL_DOUBLE(double)` | 指定した double 値に返り値を設定します。
`RETVAL_STRING(string, duplicate)` | 指定した文字列に返り値を設定します。必要に応じて Zend 内部メモリに文字列をコピーします (`RETURN_STRING` も参照ください)。
`RETVAL_STRINGL(string, length, duplicate)` | 指定した文字列を返り値に指定し、その長さが `length` となるようにします (`RETVAL_STRING` も参照ください)。 このマクロは高速でバイナリセーフです。 文字列の長さがわかっている場合は常にこのマクロを使用すべきです。
`RETVAL_EMPTY_STRING` | 空の文字列を返り値に指定します。
`RETVAL_FALSE` | false を返り値に指定します。
`RETVAL_TRUE` | true を返り値に指定します。

配列やオブジェクトのような複雑な型を返すには array_init() および object_init() を使用し、対応するハッシュ関数を `return_value` に使用します。 これらの型は簡単に作成することはできないので、定義済みのマクロは存在しません。

前のページ | ホーム | 次のページ
変数の内容の複製: コピーコンストラクタ | 上に戻る | 情報の表示