PHP this vs self

CHAN YE·2022년 10월 18일
0

결론

this는 현재 인스턴스를 가리키고
self는 호출된 클래스 자체를 가르킴

동일한 결과

class Greeter {
	function greet() {
    	echo 'hello';
    }
    
    function __construct() {
    	$this->greet(); //hello
        echo ', ';
        self::greet(); //hello
    }
}
$obj = new Greeter();
결과 : hello, hello

다른 결과

class X {
	function greet() { echo 'Greetings from X'; }
   
   	function __construct() {
    	$this->greet(); // $obj->greet();
        echo ', ';
        self::greet(); // X::greet();
    }
}

class Y extends X {
	function greet() { echo 'Greetings from Y'; }
}

$obj = new Y();
결과 : Greetings From Y, Greetings From X

construct가 자식클래스(Y)에는 없지만 부모클래스(X)에 construct가 있기 때문에 인자가 없는 Y클래스가 생성된 경우에 부모클래스(X)의 생성자가 실행되고 그 생성자 안에 있는

$this는 현재 인스턴스 $obj를 가리키고, self는 명령이 실행되는 위치 construct의 클래스 자체(X)를 가리키기 때문

1. $this를 사용해야 하는경우

  • 별다른 이유가 없는경우

2. self::를 사용해야하는경우

  • 현재 클래스를 가리켜야만 하는경우 (static등)에는 self를 사용
profile
php웹개발자

0개의 댓글