Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 클래스 속성(Property) 완벽 가이드 – 선언과 접근 방법

소개

클래스 내부에 선언된 데이터 멤버를 속성(property)이라고 합니다. 속성은 문맥에 따라 애트리뷰트(attribute) 또는 필드(field)라고도 불립니다. PHP에서 속성은 반드시 접근 제한자 키워드인 public, private, protected 중 하나로 한정해야 합니다. 속성의 이름은 PHP에서 유효한 라벨이라면 무엇이든 사용할 수 있으며, 속성의 값은 클래스의 인스턴스마다 서로 다를 수 있기 때문에 인스턴스 변수라고도 부릅니다.

인스턴스 메서드 내부에서는 의사 변수(pseudo-variable)인 $this가 제공하는 객체 컨텍스트를 통해 속성에 접근할 수 있습니다. 속성이 public으로 선언된 경우에는 객체 외부에서 -> 연산자를 사용해 접근할 수 있습니다. 반면 static 키워드로 정의된 속성은 그 값이 클래스의 모든 객체 간에 공유되며, 범위 해결 연산자 (::)와 클래스 이름을 사용해 접근합니다.

속성 선언 및 접근

다음 예제는 속성을 정의하고 접근하는 기본적인 방법을 보여줍니다.

예제

<?php
class myclass{
    private $fname="Kiran";
    public $mname="Pratap";
    static $lname="Singh";
    function dispdata(){
        echo "$this->fname\n";
        echo "$this->mname\n";
        echo myclass::$lname;
    }
}
$obj=new myclass();
$obj->dispdata();
?>

출력 결과

위 코드의 실행 결과는 다음과 같습니다.

Kiran
Pratap
Singh

클래스 외부에서는 public으로 선언된 인스턴스 속성만 객체를 통해 접근할 수 있으며, private 속성은 외부에서 접근할 수 없습니다. 참고로 이전 버전의 PHP에서는 var 키워드로 속성을 선언할 수 있었는데, 현재는 공식적으로 권장되지 않지만 하위 호환성을 위해 여전히 사용 가능하며 public 선언과 동일하게 취급됩니다.

속성 타입 선언 (PHP 7.4 이상)

PHP 7.4부터는 속성 변수에 타입 선언(type declaration)을 사용할 수 있습니다. 이를 통해 속성에 할당되는 값의 자료형을 강제할 수 있어 코드의 안정성과 가독성이 크게 향상됩니다.

예제

<?php
class myclass{
    private string $name;
    private int $age;
    function setdata(string $x, int $y){
        $this->name=$x;
        $this->age=$y;
    }
}
$obj=new myclass();
$obj->setdata("Kiran",20);
?>

타입이 지정된 속성은 값을 초기화하기 전에 읽으려고 하면 오류가 발생하므로, 위 예제처럼 setdata() 메서드를 통해 반드시 먼저 값을 할당해야 합니다.