생성자와 소멸자
객체를 생성할 때 자동으로 실행되는 메소드를 생성자(Constructor)라고 하고, 반대로 객체가 소멸될 때 자동으로 실행되는 메소드를 소멸자(Destructor)라고 합니다. 일반적으로 객체는 해당 프로그램이 종료될 때 소멸됩니다.
생성자
생성자는 다음 예제에서와 같이 객체 생성 시 속성 값을 설정하는데 사용됩니다.
07/ex7-3.php
<?php
class Triangle { // 02
public $width; // 03
public $height; // 04
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function getArea() { // 09
$area = $this->width * $this->height * 0.5;
return $area;
} // 12
} // 13
$tri1 = new Triangle(10, 5); // 15
echo "삼각형의 넓이 : ".$tri1->getArea(); //16
?>

02~13 Triangle 클래스를 정의합니다. 이 클래스는 두 개의 속성($width, $height)과 생성자 함수(__construct), 한 개의 getArea() 메서드로 구성됩니다.
03, 04 $width와 $height 속성을 정의합니다.
09~12 getArea() 메소드를 정의합니다. getArea() 메서드는 객체 자신의 $width와 $height 속성을 이용하여 삼각형의 넓이를 구한 값을 반환합니다.
15 Triangle 클래스로부터 $tri1 객체를 생성합니다. Triangle(10, 5)에서와 같이 Triangle 클래스에 인수가 존재하면 5행의 생성자 함수(__construct())가 실행됩니다. 이 때 인수 10과 5 생성자 함수의 매개 변수 $width와 $height에 복사되어 $tri1 객체 자신의 $width와 $height 속성 값을 각각 10과 5로 설정합니다.
16 $tri1->getArea() 메서드를 호출하여 echo 문으로 실행 결과에서 나타난 것과 같이 삼각형의 넓이를 출력합니다.
소멸자
다음 예제에서와 같이 소멸자는 객체가 소멸될 때 실행됩니다.
07/ex7-4.php
<?php
class Person {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function __destruct() { // 08
echo "이름은 ".$this->name."입니다.";
} // 10
}
$person1 = new Person("홍길동");
?>

08~10 소멸자 함수 __destruct()는 13행에서 생성된 객체가 소멸, 즉 프로그램이 종료될 때 실행됩니다. 따라서 프로그램이 종료되면 소멸자 __destruct() 함수 내에 있는 9행의 echo문에 의해 '이름은 홍길동입니다.'가 출력됩니다.