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

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

Patricia Arquette
풀어 주다: 2024-12-20 06:34:10
원래의
648명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿