知っている人のための質問。 PHP documentation(php5の場合)は、オブジェクトを受け入れるメソッドの場合、実際に渡される値は「オブジェクトアクセサーが実際のオブジェクトを見つけることを可能にするオブジェクト識別子」であるため、 。問題は、あなたが実際にを実行したときに何が起こっているかということです。はこれを行いますか?PHPで、フードの下で参照によってオブジェクトを渡すとどうなりますか?
は、次のコードを考えてみましょう:
<?php
function foo(&$arg){
if(is_array($arg)){
print $arg['foo'];
}
if(is_object($arg)){
print $arg->{'foo'};
}
}
$o1 = new \stdClass;
$o1->foo = 'bar';
$a1 = ['foo'=>'bar'];
print sprintf("O1 foo: %s", foo($o1));
print sprintf("a1 foo: %s", foo($a1));
これは正しく出力:
o1 foo: bar
a1 foo: bar
疑問は、なぜですか?実際のオブジェクトへのアクセスを許可するこのオブジェクト識別子参照で何が起きているのか誰でも説明できますか?
「なぜ」。どうして? –