PHP

    self:: 클래스 정의 그 자체를 참조
    • 조회수 7
    • 작성일 2026-03-30
    •  


    $this->가 '현재 객체'를 의미한다면, self::는 '현재 클래스'의 정적 멤버를 호출할 때 씁니다.


    차이점: 상속 관계에서 자식 클래스의 오버라이딩을 무시하고 코드가 작성된 바로 그 클래스의 멤버를 고정해서 호출합니다.


    class Burger {

    public static $type = "치즈버거";


    public function getType() {

    return self::$type; // 현재 클래스의 정적 변수 호출

    }

    }


    class 밖에서는 작동 안 함


    // ❌ 클래스 밖 - 사용 불가

    const ALLOWED_MIDS = ['php', 'laravel'];

    echo self::ALLOWED_MIDS; // 에러 발생!


    // ✅ 클래스 안 - 사용 가능

    class BoardController

    {

    private const ALLOWED_MIDS = ['php', 'laravel'];


    public function test() {

    var_dump(self::ALLOWED_MIDS); // 정상 동작

    }

    }


    $this-> → 변수 (바뀔 수 있는 값)

    self:: → 상수 (절대 안 바뀌는 값)


    둘 다 클래스 안에서만 동작하고, 클래스 안의 것을 참조한다는 점은 같습니다.