[php] 클래스 기본 구조
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