PHPのソースコードで、「function &関数名」というソースコードをたまに見かけます。

これはどういう意味なのでしょうか?
(関数へのポインタですか?)

あと、余談なのですが、PHPでは”ポインタ”という表現を用いませんが、どのようにこの概念を表現するのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2007/03/06 00:25:05
  • 終了:2007/03/13 00:30:04

回答(3件)

id:arcana No.1

arcana回答回数120ベストアンサー獲得回数102007/03/06 00:48:39

ポイント27pt

http://www.scollabo.com/banban/php/php_10.html

参照渡しのことでしょうか?


ポインタとはちょっと異なるかと思います。

http://www2.ee.knct.ac.jp/el/E3/E305/pointer02.html

※上手く説明出来ないので、サイト引用でご容赦ください。

id:tomoyuki28jp

ご回答ありがとうございます。

参照渡しのことではありません。

例えば、このサイトにも例がありますし、http://labs.unoh.net/2006/10/php_print_debug.html

zend frameworkのソースを呼んでいると、

名前空間にアクセスする関数のいくつかで、

function &関数名

という記述が利用されています。

2007/03/06 01:02:40
id:nandedarou No.2

nandedarou回答回数230ベストアンサー獲得回数342007/03/06 04:57:39

ポイント27pt

リファレンス(参照)」を返す関数だと思います。

http://www.php.net/manual/ja/language.references.php

特に、「リファレンスを返す」を見てください。

蛇足ですが、どのような場合にリファレンスを返す関数使うのか、私なりに解釈して見ました。

あるオブジェクトを操作する必要があるが、どのオブジェクトに対してその操作を行うかの選択が複雑な場合、

オブジェクトの選択を関数にまかせて、関数が選択したオブジェクトを操作するというプログラム構造にしようと思ったとき、

関数の返り値をオブジェクトのリファレンスにすると便利だということだと思います。

※ポインタはという概念はPHPにはないようです。必ずしも必要なものではないからでしょう。リファレンスは似ていますが…。

id:tomoyuki28jp

ご回答どうもありがとうございます。

大変参考になりました。

2007/03/09 08:55:12
id:ito-yu No.3

ito-yu回答回数323ベストアンサー獲得回数142007/03/07 14:16:48

ポイント26pt

関数の返値を参照渡しとしています。

http://www.php.net/manual/ja/language.references.return.php

リファレンス構文を使わないと、関数の呼び出しごとにオブジェクトのコピーを作成することになります。メモリの無駄です。

id:tomoyuki28jp

ご回答どうもありがとうございます。

> リファレンス構文を使わないと、

> 関数の呼び出しごとにオブジェクトの

> コピーを作成することになります。

> メモリの無駄です。

リンクは既出のものと同じでしたが、

コメントが参考になりました。

どうもありがとうございました。

2007/03/09 08:56:47

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません