[PHP-users 33702] 参照渡しについて

View: New views
4 Messages — Rating Filter:   Alert me  

[PHP-users 33702] 参照渡しについて

by kaz-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

こんにちは 奥井です。
classの関数への変数を参照渡しにして動作はしたんですが/var/log/apache2/error_logをみたらWarningがでていました。
PHP Warning:  Call-time pass-by-reference has been deprecated - argument passed by value;  If you would like to pass it by reference, modify the declaration of [runtime function name]().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file.  However, future versions may not support this any longer.

マニュアルをみたら「推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する」とありますがこれはどうやるんでしょうか?
それからphp.iniでallow_call_time_pass_referenceをOn/OffどちらでもPHP Warningはでるのは正しいのでしょうか?
それに関数コール時に参照で引数を渡すことはやめたほうがいいというような事が書かれていますがphp5からは参照渡しが標準になったということを考えるとなんだかよくわかりません。ご教授お願いします。

使用しているphpは4.4.8です。
$new_rec_timeを参照渡しにして関数check_overlap内で$new_rec_timeを変更して呼出側で$new_rec_timeを使っています。こういう方法はよくないのでしょうか?
$id = $c->overlap->check_overlap($c,$kind,"","",&$new_rec_time);
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33703] Re: 参照渡しについて

by KOYAMA Tetsuji :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

小山です。

2008/6/25 kaz <okui@...>:
> マニュアルをみたら「推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する」とありますがこれはどうやるんでしょうか?

function hoge($param) {
  // 省略
}

という定義のときに

$a = 1;
hoge(&$a)

という書き方はマニュアルにあるように推奨されません。

推奨される書き方は

function hoge(&$param) {
  // 省略
}

$a = 1;
hoge($a)

のように、関数の定義時に引数を参照で宣言する手法です。

> それに関数コール時に参照で引数を渡すことはやめたほうがいいというような事が書かれていますがphp5からは参照渡しが標準になったということを考えるとなんだかよくわかりません。ご教授お願いします。

関数に参照で引数を渡すことそれ自体は別に否定されている訳ではありません。参照で引数を
渡して関数内で中身を書き換えてもらうことは、普通によく使われる手法です。

問題なのは最初の例のように、関数の定義側で参照として引数を宣言していないにも
関わらず、呼び出し側で & をつけて参照渡しにすることです。

--
 小山哲志@ビート・クラフト
 koyama@...
 koyama@...
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33704] Re: 参照渡しについて

by kaz-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

おはようございます、奥井です。
呼出し側ではなく関数側で&を使って参照渡しを定義するってことですか、いままで参照渡し使ったことなかったのであやふやだったことがはっきりした感じがします。僕の持ってた本ではどちらでも結果は同じだけど呼出し側で参照渡しを定義した方が参照渡しを使ってるのがはっきりわかっていいと書いてありましたが、ちょっと古い本のせいかなあ?
ありがとうございました。


> 小山です。
>
> 2008/6/25 kaz <okui@...>:
> > マニュアルをみたら「推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する」とありますがこれはどうやるんでしょうか?
>
> function hoge($param) {
>   // 省略
> }
>
> という定義のときに
>
> $a = 1;
> hoge(&$a)
>
> という書き方はマニュアルにあるように推奨されません。
>
> 推奨される書き方は
>
> function hoge(&$param) {
>   // 省略
> }
>
> $a = 1;
> hoge($a)
>
> のように、関数の定義時に引数を参照で宣言する手法です。
>
> > それに関数コール時に参照で引数を渡すことはやめたほうがいいというような事が書かれていますがphp5からは参照渡しが標準になったということを考えるとなんだかよくわかりません。ご教授お願いします。
>
> 関数に参照で引数を渡すことそれ自体は別に否定されている訳ではありません。参照で引数を
> 渡して関数内で中身を書き換えてもらうことは、普通によく使われる手法です。
>
> 問題なのは最初の例のように、関数の定義側で参照として引数を宣言していないにも
> 関わらず、呼び出し側で & をつけて参照渡しにすることです。
>
> --
>  小山哲志@ビート・クラフト
>  koyama@...
>  koyama@...
> _______________________________________________
> PHP-users mailing list  PHP-users@...
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3

[PHP-users 33705] Re: 参照渡しについて

by Shindo :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

進藤です。

>の持ってた本ではどちらでも結果は同じだけど呼出し側で参照渡しを定義した方が参
>照渡しを使ってるのがはっきりわかっていいと書いてありましたが、ちょっと古い本
>のせいかなあ?

関数の定義で
function hoge(&$param) {
  // 省略
}

と書いてあれば

呼び出すときに
$a = 1;
hoge(&$a)

と呼びだしても問題ないと思いますよ。
PHP4でやった時は、エラーもワーニングも出なかったと思います。PHP5では確認
していませんが。

関数側の定義はコンピュータへの宣言
呼び出し側はプログラマーへのコメントと
考えればよいのではないでしょうか。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 進藤寿則@アットシステム   _/_/
 e-mail shindo@atsystem.jp     _/
_______________________________________________
PHP-users mailing list  PHP-users@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
LightInTheBox - Buy quality products at wholesale price