PHPコーディング

PHPで参照渡し

2013年01月21日
PHPの関数で参照渡しするには、
//関数
function func(&$val){
  ・
  ・
}
//呼び出し元
$callval = "abc";
func($callval);
とします。

関数の引数に【&】を付けると、参照引渡しというお約束です。
そして呼び足し元の変数には【&】は付きません。

知ってはいたのですが、ついうっかり呼び出し元の変数に【&】を付けてしまっていた箇所があったことがあります。関数をコピーして、呼び出し元へペースト、【&】を取り忘れていたのです。

販売しているツールのソースは、かなり前に修正したのですが、本当に全て直っているか、新たに取り忘れていないか、少し心配になってきました。

取り忘れていると、サーバーの設定によってはワーニングが出るのです。
エラーと違いワーニングなので、動作には問題ありません。開発者には見えて、ユーザーには見えない設定が望ましいです。
メジャーなサーバーではワーニングが出ない設定になっているので、問題はありません。
今までは、ワーニングが出る場合、ユーザー様の【php.ini】に【allow_call_time_pass_reference=off】を付け加えて貰っていました。

これをソースのほうから設定するように変更しようとと思い、【allow_call_time_pass_reference】につてい調べてみみました。
すると、バージョン5.4.0で削除されていました。

動いているバージョンは5.4.0より低いところも多々ありますが、バージョンアップされたときエラーが出るようになってしまう可能性もあるということです。使わないほうがいいでしょう。

そもそも消し忘れ、付けるつもりがないのに付いているので、リリース前にチェックできるのが一番です。

自分のサーバーで、今度は【allow_call_time_pass_reference=on】に設定し、チェックする方針にしました。