2013-01-02 3 views
1

로 현재의 클래스 패스 질문에있는 객체 $this 참조. 오류가 보여 있기 때문에 그러나 이것은 올바르지 않습니다 :나는이 같은 클래스가 매개 변수

메시지 : 정의되지 않은 변수 :이

나는 생각 다른 객체에 $this 기준점 또는 객체가에서 만들어지기 때문에 일을 할 수있다 또 다른 스크립트. 또한, 그와 메소드를 호출 문제가 없었기 때문에 self을 사용하려고하지만, 매개 변수로 내가 얻을 :

메시지 : 정의되지 않은 상수 자체의 사용 - 가정 '자기'

을 그래서, 수 당신은 나를 올바른 방향으로 안내합니까?

답변

2

몇 가지 사소한 변경 사항을 제외하고 코드를 직접 테스트했습니다. 제대로 작동하는 것 같습니다.

  • 추가 된 전역 함수 path_helper$this->log()self::log()을 변경 (내가 가진이 무엇을 아무 생각 없음)

PHP

function path_helper(Person $object) 
{ 
    var_dump($object); 
} 
class Person 
{ 
    public function create_path() 
    { 
     $this->log(); 
     path_helper($this); //a global function in other php file 
    } 

    public function log() 
    { 
     echo "trying to create a path"; 
    } 

} 
class Builder 
{ 
    public function build() 
    { 
     $type = 'Person'; 
     $temp = new $type(); 
     $temp->create_path(); 
    } 
} 

$Build = new Builder(); 
$Build->build(); 

결과

,
trying to create a path 

object(Person)[2] 

코드가 올 바르고 올바른 방향으로 가고 있습니다.

+0

메쏘드 안에서'$ this'를 호출하면 오류가 인쇄됩니다. 그러나 그것이 여러분 쪽에서 작동한다면 다른 것이 있습니다. 검토해야합니다 – manix

+1

@manix. 흥미 롭 군. 어떤 PHP 버전을 사용하고 있습니까? 거기에 문제가 생길 수 있습니다. 나는 5.4.3에있다. '$ this'를 앞뒤로 전달하는 것은 메소드 체인과 같은 태스크를 수행하는 방법입니다. 그래서 버전 문제는 제가 생각할 수있는 것입니다. – phpisuber01

+0

PHP 5.3.16 제대로 작동합니다. – manix

1

이 같은 로그 메소드를 호출해야합니다

$this->log(); 

자체를 사용하기 때문에 :: 정적 메소드 예약되어 있습니다.

또한,이 같은 path_helper 함수를 호출하려고 :

path_helper(self); 

희망은 내가 당신을 도울 수 있습니다. 그것을 테스트 할 수는 없지만 제대로 작동 할 것입니다.

+0

Nuop, 위에서 언급 한대로 doen't work를 사용하지 마십시오 – manix

관련 문제