2013-10-13 2 views
3

나는이 같은 클래스가 대신돌아 요소는

$myFoo = new Foo(); 
$myFoo->getElementByName('foo1')->active = true; 

을, 내 코드를 실행하면, 이 getElementByName

를 호출하기 전에이었다로 $elements['foo1']active 속성은 어떻게 t 얻을 수있다, 나는 기능은 요소의 "복사"를 만드는 것이라고 생각 여전히 거짓 그는 배열의 실제 요소를 수정하여 배열에서 액세스 할 때 그 값이 변경되었습니다. 그것에

+2

동작을 재현 할 수 없습니다. http://codepad.org/7RFtib1d – ComFreek

+0

당신이 옳다고 생각합니다. 그러나 버전 5 이후의 PHP는 어쨌든 객체를 참조로 전달해야합니다. PHP 4를 아직 실행하고 있습니까? – knittl

+0

@knittl PHP 4.4.9에서 'unexpected T_OBJECT_OPERATOR'가 발생합니다. – ComFreek

답변

1

돌아 요소에 대한 참조 :

function &getElementByName($name) { // & returns by reference 
    foreach($this->elements as $elm) { 
     if ($elm->name == $name) { 
      return $elm; 
     } 
    } 
} 

를 PHP를 시작으로 5 개체는 기본적으로 passed by reference이다.

+0

사실, 개체 참조는 값으로 전달됩니다. – Mark