>백엔드 개발 >PHP 튜토리얼 >PHP 5: `$this` 대 `self` - 언제 각각을 사용해야 할까요?

PHP 5: `$this` 대 `self` - 언제 각각을 사용해야 할까요?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 06:34:10665검색

PHP 5: `$this` vs. `self` – When to Use Each?

자체 대 $this: 각 사용 시기 및 방법

질문:

PHP 5에서 "self"와 "$this" 키워드의 사용법은 어떻게 다릅니까? 각각은 언제 적절하게 사용해야 합니까?

답변:

짧은 답변:

"$this"를 사용하여 참조하세요. 현재 객체의 인스턴스 변수와 메소드. 현재 클래스의 정적 변수 및 메서드를 참조하려면 "self"를 사용하세요.

정답:

비정적 멤버와 정적 멤버:

  • "$this->member"는 비정적 멤버 변수 및 특정 메서드에 액세스합니다.
  • "self::$member"는 클래스의 모든 인스턴스에서 공유하는 정적 멤버 변수 및 메서드에 액세스합니다.

다형성:

  • "$this"는 파생된 메서드를 호출하여 다형성을 보여줄 수 있습니다.
  • "self"는 다형성을 억제하고 항상 현재 클래스에 정의된 메서드를 호출합니다.

예(올바른 사용법):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo $this->non_static_member . ' ' . self::$static_member;
    }
}

new X(); // Output: 1 2

예(잘못된 사용법):

class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo self::$non_static_member . ' ' . $this->static_member; // Incorrect usage
    }
}

new X(); // Error: Undefined properties

다형성 억제:

class X {
    function foo() {
        echo 'X::foo()';
    }

    function bar() {
        self::foo(); // Suppresses polymorphism
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar(); // Output: X::foo()

요약:

"$ 사용 비정적 멤버 액세스 및 다형성의 경우 this"입니다. 정적 멤버 액세스 및 다형성을 억제해야 하는 경우 "self"를 사용하세요.

위 내용은 PHP 5: `$this` 대 `self` - 언제 각각을 사용해야 할까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.