2012-11-29 2 views
0

이것은 'help me'질문보다 토론 주제입니다.참조로 전달되지 않으면 변수를 어떻게 재정의 할 수 있습니까?

나는 이상한 문제가 발생했습니다. 변수 (객체)는 아무데도 전달되지 않으면 무시됩니다.

예;

var_dump($node->title); 
$entity = $server->pull($item); 
var_dump($node->title); 

두 개의 var_dumps는 두 개의 다른 값을 표시합니다.

$ item은 (는) 관련이없는 문자열입니다.

이 시점에서 'pull()'메서드의 내용이 적절하다고 생각하지 않습니다.이 부분이 재정의되는 것에 대해 궁금하지 않습니다. 어떻게 재정의되는지 궁금합니다.

PHP는 메소드에 전달되지 않은 한 어떻게 변수를 변경할 수 있습니까?

내 함수에는 참조가 없습니다. 노드는 직접 전달됩니다.

function my_function($node) { 

내가 내 객체 의 복제를 할 경우에도 나는 VAR 복제 된 개체가 무시 여전히 입니다

$my_node = $node; 

에게 이름을 바꿀 경우에도 마찬가지입니다. 이름이 변경된 것을 목적으로한다 여전히 오버라이드 (즉, 그 이름과 관련이없는.)

나는이 가능한 방법을 알고 싶어요.() (또는 연관된 메소드)가 주어지지 않은 변수를 타고 어떻게 넘길 수 있습니까?

다시 말씀 드리겠습니다. 신경 쓰지 않는다 값이 변경되고있는 경우는 어떻게 메쏘드에 건네주지 않으면 변경되고 있습니다. 이렇게

답변

1

:

$my_node = $node; 

실제로 개체를 복제하지 않습니다. $ my_node를 변경하면 두 노드 모두 객체에 대한 포인터이기 때문에 여전히 $ node에 반영됩니다. http://www.php.net/manual/en/language.oop5.references.php

따라서 $ node 또는 $ node의 사본에서 동작하여 객체를 변경할 수 있습니다.

은 위의 링크에서이 예를 참조하십시오

class A { 
    public $foo = 1; 
} 

$a = new A; 
$b = $a;  // $a and $b are copies of the same identifier 
      // ($a) = ($b) = <id> 
$b->foo = 2; 
echo $a->foo."\n"; 

을 우리가 = $ 우리가 $ B의 속성을 변경하는 경우는, 그것은 $ A의 속성을 변경 b를 $를했다하더라도.

+0

이 아 그래, 내 실수하고를 삭제 감사 (나는.이를 반영하는 내 질문에 업데이트)하지만 여전히 오버라이드 (override)되는 방법을 설명하지 않습니다. – Christian

0

그래서 PHP5에서 OO의 중요한 부분은 객체가 인데 항상이 지나가 버렸습니다. 나는 완전히 잊어 버렸습니다.

이렇게하면 호출되는 메서드가 참조를 통해 내 개체에 액세스 할 가능성이 높아지고이 질문이 어리석은 것으로 보입니다.:)

http://php.net/manual/en/language.oop5.references.php

+0

정확히 정확히 가리키는 기존 답변을 수락하십시오. 또는 적어도 * any * 대답을 수락하십시오.) – hakre

관련 문제