2010-07-01 4 views
1

필자는 처음으로 PHP에서 몇 가지 코드를 작성하려고 시도하면서 지난 몇 주 동안 어두운면을 보인 Java 개발자입니다.

대부분의 것들은 익숙한 것처럼 보이고, 메소드는 기능이됩니다. -> 변수는 앞에 $가 있고 어떤 타입인지 전혀 알지 못한다. 그러나 나는 $ this 키워드로 완전히 곤란하다.

$ this가 java this.myCoolMethod()에서와 같이 현재 클래스의 함수를 호출 할 것으로 예상하지만, 자주가는 오픈 소스 프로젝트를 훑어 보면 $ this-> myCoolMethod()가 완전히 다른 클래스의 기능!

여기 무슨 일입니까? '$ this'는 실제로 무엇을 의미합니까?

도움 주셔서 감사합니다.

요한은

+1

* (참조) * [PHP 클래스와 객체 - 기본 사항] (http://de2.php.net/manual/en/language.oop5.basic.php) – Gordon

+1

'$ this'는 같은 클래스 인스턴스를 참조합니다 , 같은 클래스가 아닙니다. – Gumbo

+0

모두들 저는 자바 세계로부터 상속 받지만 자바 토큰에서는 수퍼 클래스 인스턴스 또는 부모 클래스를 참조하기 위해 super 키워드를 사용합니다. this 키워드는 현재 클래스 인스턴스에만 속하는 메소드를 참조하기 위해 사용합니다 따라서 그 클래스의 부모 멤버는 혼란을 겪습니다. 건배! –

답변

2

완전히 다른 클래스에서 메서드를 호출하는 이유는 해당 클래스가 해당 메서드로 다른 클래스를 확장했기 때문입니다.() 클래스에없는 whatwhat는, 그것이 확장하는 클래스에서 상속에도 불구하고

class bla { 
    public function __construct() {} 

    public function whatwhat() { 
    echo "what...."; 
    } 
} 

class lala extends bla { 
    public function __construct() {} 
} 


$lalaObj = new lala(); 

$lala->whatwhat(); 

당신이 볼 수 있듯이, :

여기에 빠른 예입니다.

희망이 있습니다.

+0

모두 덕분에 자바 세계에서 상속 받았지만 자바 토지에서는 수퍼 클래스 인스턴스 또는 부모를 가리키는 super 키워드를 사용합니다.이 키워드를 사용하여 그 클래스의 부모 멤버를 포함하지 않는 현재 클래스 인스턴스에 속하는 메소드를 참조하십시오. 건배! –

1

당신은 상속이 무엇인지 살펴 보셔야합니다.

+0

왜 나는 downvoted을 얻었습니까? 이 공동체는 평범하지 않습니다. –

+0

Downvoted. Java 오르가즘의 상속 - Java의 파쇄물을 작성한 사람은 상속이 무엇인지 정확하게 알고 있습니다. – Puppy

+0

DeadMG, 그게 무슨 소리 죠? 너는 그 질문을 읽었 니? –

0

$ 이것은 실제로 클래스의 현재 인스턴스를 참조합니다.

$ this-> myCoolMethod()는 전혀 다른 클래스의 함수를 호출합니다.

예를 들어 주시겠습니까? myCoolMethod()가 클래스 자체에 정의되지 않은 유일한 상황은 부모 클래스 또는 상속 된 클래스에 정의 된 경우입니다.

+0

감사 마크, 이것은 올바른 방향으로 나를 도왔습니다. –

1

은 메소드가 속한 객체를 나타냅니다. 오브젝트가 다른 클래스를 확장하는 클래스에 속하면 다른 메소드와 마찬가지로 $this->method_name()을 사용하여 호출 할 수있는 부모 클래스의 메소드를 상속 할 수 있습니다.

0

$this은에있어 어떤 인스턴스를 나타냅니다. 내가 Class B가 될 Class_A을 확장하고, Class_B::methodName하지 Class_A::methodName를 호출 할 것이라고, Class_BmethodName라고 그래서 만약.

난 당신이 어려움을 겪고있는 무슨 상황 모르고 명확하게 설명하지만, 당신은 당신이에있어 현재 클래스의 이름을 지정 $this를 사용하는 곳 옆에 __CLASS__을 울리는 시도하는 방법을 모르겠어요.

관련 문제