본문 바로가기
개발 기초/PHP

PHP - 클래스 사용

by 륀두 2020. 4. 28.
반응형

1. 인스턴스의 생성

클래스가 선언되고 나면, 선언된 클래스로부터 인스턴스를 생성할 수 있습니다.

PHP에서는 new 키워드를 사용하여 인스턴스를 생성할 수 있습니다.

이때 클래스 이름을 통해 생성자로 필요한 인수를 전달할 수 있습니다.

문법
$객체이름 = new 클래스이름(인수1, 인수2, ...);

 

2. 클래스 접근

클래스의 프로퍼티에 접근하거나 메소드를 호출할 때는 화살표 기호(->)를 사용합니다.

객체의 이름 뒤에 화살표 기호(->)를 붙이고, 접근하려고 하는 프로퍼티나 호출하고자 하는 메소드의 이름을 사용하면 됩니다.

문법
$객체이름->프로퍼티이름;
$객체이름->메소드이름;

PHP에서는 프로퍼티와 메소드의 접근 범위를 제한할 수 있으므로, 클래스 외부에서는 접근 제어자에 따라 접근이 가능할 수도 있고 또는 불가능할 수도 있습니다.

또한, 객체 내부에서 해당 인스턴스의 프로퍼티에 접근하고 싶을 때는 특별한 변수인 $this를 사용할 수 있습니다.

$this 변수는 해당 인스턴스가 바로 자기 자신을 가리키는 데 사용하는 변수입니다.

 

3. 접근 제어(access modifier)

PHP에서는 클래스 멤버에 public, private, protected 키워드를 사용하여 각각의 멤버에 대한 접근 제어를 명시할 수 있습니다.

public으로 선언된 멤버는 외부로 공개되며, 해당 객체를 사용하는 어디에서나 직접 접근할 수 있게 됩니다.

private로 선언된 멤버는 외부로 공개되지 않으며, 해당 클래스의 멤버에서만 접근할 수 있습니다.

protected로 선언된 멤버는 상위 클래스에 대해서는 public 멤버처럼 취급되며, 외부에서는 private 멤버처럼 취급됩니다.

즉, 해당 클래스의 멤버와 해당 클래스를 상속받은 자식 클래스에서만 접근할 수 있습니다.

var 키워드를 사용하여 클래스의 프로퍼티를 정의하면, 해당 프로퍼티의 접근 제어는 public으로 자동 정의됩니다.

또한, 메소드를 작성할 때 접근 제어자를 생략하면 public으로 자동 정의됩니다.

class ClassName
{
    public $publicVar;
    private $privateVar;

    protected $protectedVar;

    public function __constructor()
    {
        $this->publicVar = "public property<br>";

        $this->privateVar = "private property<br>";

        $this->protectedVar = "protected property<br>";

    }

    public function publicMethod()
    {
        echo "public method<br>";

    }
    protected function protectedMethod()
    {
        echo "protected method<br>";
    }
    private function privateMethod()
    {
        echo "private method<br>";
    }
}

$object = new ClassName();

echo $object->publicVar;      // 접근 가능
//echo $object->protectedVar; // 접근 불가능
//echo $object->privatev;     // 접근 불가능

$object->publicMethod();      // 호출 가능
//$object->protectedMethod(); // 호출 불가능
//$object->privateMethod();   // 호출 불가능

 

4. 정보 은닉(data hiding)

클래스 외부에서는 접근 제어 때문에 private 멤버나 protected 멤버로는 직접 접근할 수 없습니다.

하지만 public 메소드를 사용하면 해당 클래스의 private 멤버나 protected 멤버에도 접근할 수 있습니다.

이렇게 public 메소드는 private 멤버나 protected 멤버와 프로그램 사이의 인터페이스(interface) 역할을 수행합니다.

이렇게 외부에서 바로 데이터로 접근하지 못하게 하는 것을 정보 은닉(data hiding)이라고 합니다.

클래스의 외부에서 public 메소드인 getValue()와 setValue() 메소드를 사용하여 해당 클래스의 private 멤버에 접근할 수 있습니다.

class ClassName
{
    private $privateVar;

    public function __constructor()
    {
        $this->privateVar = "private property";

    }


    public function getValue()
    {
        return $this->privateVar;
    }


    public function setValue($value)
    {
        $this->privateVar = $value;
    }
}

$object = new ClassName();
$object->setValue("hello"); // setValue() 함수를 통해 $private의 값을 변경할 수 있음.
echo $object->getValue;     // getValue() 함수를 통해 $private의 값을 출력할 수 있음.

반응형

'개발 기초 > PHP' 카테고리의 다른 글

PHP - 오버라이딩  (0) 2020.04.28
PHP - 상속  (0) 2020.04.28
PHP - 클래스 생성  (0) 2020.04.28
PHP - 정규표현식(특수 문자, POSIX 문자 클래스)  (0) 2020.04.28
PHP - 정규 표현식  (0) 2020.04.28