[php] 클래스 기본 구조 updated_at: 2024-12-15 04:04

Class의 기본 구조

예전의 PHP4 위주로 클래스를 설명하였는데 시간이 지난 지금 다시 최신 문서로서 설명 드립니다.
예전 것(php4) 가 궁금하다면 php4 에서의 클래스 사용법 참조해주시고 지금 부터는 최신 클래스로 설명 드리겠습니다.

   

1. 클래스의 기본구조 및 이름 규칙

class Animal {

	// 프로퍼티(멤버 변수)
	private $cat;
	public $lion;
  protected $tiger

	// 생성자
 	public function __construct()
	{
	}

	// 메소드
	public function getAnimal() {
		return $this->lion;
	}

	private function setAnimal($name) {
		$this->lion = $name;
	}
}

2. 객체생성 및 생성자 와 $this

new를 이용하여 클래스 Instance를 생성할 경우 __construct()는 자동으로 실행됩니다.

$animal = new Animal; // new Animal() OK

이때 __construct() 에 특정 값들을 세팅 하려고 하면 아래와 같이 처리 되어야 합니다.

class Animal {
	public function __construct($character, $color)
	{
	}
}

$animal = new Animal('cute', 'red');

클래스 내부에서의 변수는 $this를 활용하여 접근 가능합니다.

  앞에서 객체를 생성할때 클래스명 뒤에 괄호를 사용했습니다.   $engine = new Car_Engine();   이 부분이 생성자를 호출하는 부분입니다. 생성자는 객체가 생성될때 실행되는 특수한 메소드 입니다. 생성자를 호출하지 않을 경우 다음과 같이 생성할 수도 있습니다.   $engine = new Car_Engine;

3. 접근 제어자(Access Modifier)와 클래스 사용하기

  • public : 클래스의 외부에서 접근이 가능합니다.
  • protected : 클래스의 내부와 상속 받은 클래스(extends 로서 상속 받음)에서 접근이 가능합니다.
  • private : 클래스의 내부에서만 사용할 접근할 수 있습니다.
class A {
	public function methodAa() {
    //
  }

  private function methodAb() {
    //
  }

	protected function methodAc() {
    //
  }
}

class B extends A { // A를 상속받음(A는 부모클래스 이고 B는 자식 클래스라 부릅니다.)
	public function methodBa() {
		echo "public 이므로 외부에서 접근가능";
	}

	private function methodBb() {
   echo "private 이므로 외부에서 접근불가능";
  }

	public function methodBc() {
		$this->methodBd(); // private 일 경우 동일 클래스에서 $this 를 활용해서 접근 가능
	}

  private function methodBd() {
    $this->methodAa(); // OK, class A 의 public method에 접근가능
		$this->methodAb(); // Faill, class A 의 private method에 접근 불가능
		$this->methodAc(); // OK, class A 의 protected method에 접근가능
  }
}

// 클래스 호출
$c = new B(); // new를 이용하여 클래스 Instance를 생성
$c->methodBa() // OK
$c->methodBb() // Fail
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글