본문 바로가기
IT/php

2021-01-26-클래스

by 봉즙 2023. 2. 27.

layout : post
title : "클래스"

category : PHP

인스턴스

new 키워드를 사용하여 인스턴스를 생성

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

클래스 멤버에 접근

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

$객체이름->프로퍼티이름;

$객체이름->메소드이름;

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

$this->프로퍼티이름;

접근 제어

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

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

protected로 선언된 멤버는 해당 클래스의 멤버와 해당 클래스를 상속받은 자식 클래스에서만 접근

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();   // 호출 불가능

정보 은닉

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

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의 값을 출력할 수 있음.

'IT > php' 카테고리의 다른 글

2021-02-15-싱글쿼터 더블쿼터 차이  (0) 2023.02.27
2021-01-26-타입 변환  (0) 2023.02.27
2021-01-26-조건문  (0) 2023.02.27
2021-01-26-인터페이스  (0) 2023.02.27
2021-01-26-오버로딩  (0) 2023.02.27

댓글