출처 : http://www.cyworld.com/duck_info/3857155
[PHP5]생성자(Constructor)와 소멸자(Destructor)
장현덕 2010-06-22 17:33:28 주소복사 조회 599 스크랩 1 .생성자(Constructor)
- 생성자는 클래스의 인스턴스를 생성할 때, 인스턴스를 생성함과 동시에 해당 인스턴스가 가진 멤버 변수의 값을 원하는 값으로 초기화하거나 또는 인스턴스가 생성될 때 반드시 거쳐야 하는 초기화 과정을 구현할 수 있도록 실행하는 역할을 한다.
- PHP 5에서 생성자란 이름 그대로 하나의 인스턴스가 생성될 때 내부에서 자동으로 호출되는 개념의 메소드로 반드시 ' _construct'라는 정해진 이름을 가져야 하며 인자의 개수는 초기화에 필요한 만큼 프로그래머가 임의로 정의 할 수 있다. 또, PHP 5에서 생성자는 함수 중복(메소드 오버로딩)의 경우처럼 같은 이름으로 두 개 이상 존재할 수 없다.
PHP 5에서는 메소드 오버로딩을 근본적으로 허용하지 않는다.
따라서 생성자는 단 하나만 존재해야 한다.
[코드]
<?php
/*
* 만든이 : 장현덕
* 만든날 : 2011년 10월 4일
* 내 용 : 생성자(생성자는 인스턴스를 생성과 동시에 자동 호출되어 인스턴스 멤버의 초기화를 수행한다.)
*/
class Time{
//클래스 멤버 변수
private $hour;
private $minute;
private $second;
function __construct($hour, $minute, $second){
$this->setTime($hour, $minute, $second);
}
public function setTime($hour, $minute, $second){
$this->hour = ($hour >= 0 && $hour < 24)? $hour : 0;
$this->minute = ($minute >= 0 && $minute < 60)? $minute : 0;
$this->second = ($second >= 0 && $second < 60)? $second : 0;
}
//메소드
public function ToUniversalTime(){
return sprintf("%02d:%02d:%02d", $this->hour, $this->minute,
$this->second);
}
}
//인스턴스(Instans)의 생성
$time = new Time(22, 57, 38);
//호출 및 출력
echo $time->ToUniversalTime();
?>
* PHP 버전 확인 꼭해야함..이건 php5 이상이다
--------------------------------------------------------------------------------
소멸자(Destructor)
클래스의 인스턴스가 생성되는 시점에서 생성자가 호출되듯이 생성된 인스턴스가 소멸되는 시점에서 는 소멸자라고 하는 메소드가 호출된다. 생성자가 '_construct'라는 이름을 갖는 것처럼 소멸자 역시 '_destruct'라는 고정된 이름을 가지며 생성자와 반대로 인스턴스가 소멸되는 시점에서 내부적으로 자동 호출된다.
PHP에서도 마찬가지로 적용되어 PHP 스크립트에서 이미 생성된 인스턴스를 더 이상 참조하지 않을 때, 해당 인스턴스가 소멸되기 전에 __destruct()라는 이름의 소멸자가 호출된다.
[코드]
<?php
/*
* 만든이 : 장현덕
* 만든날 : 2011년 10월 4일
* 내 용 : 소멸자(Destructor)
*/
class Time{
private $hour;
private $minute;
private $second;
function __construct($hour, $minute, $second){
$this->setTime($hour, $minute, $second);
echo "생성자 호출!<br/>";
}
function __destruct(){
echo "소멸자 호출!<br/>";
}
public function setTime($hour, $minute, $second){
$this->hour = ($hour >= 0 && $hour < 24)? $hour : 0;
$this->minute = ($minute >= 0 && $minute < 60)? $minute : 0;
$this->second = ($second >= 0 && $second < 60)? $second : 0;
}
public function ToUniversalTime(){
return sprintf("%02d:%02d:%02d", $this->hour, $this->minute, $this->second);
}
}
echo "객체 생성 전!<br/>";
$time = new Time(22, 57, 30);
echo "객체 생성 후!<br/>";
echo $time->ToUniversalTime()."<br/>";
echo "스크립트 종료";
?>
'php' 카테고리의 다른 글
php 엑셀 변환시 한글깨짐 현상 (0) | 2012.12.06 |
---|---|
CodeIgniter PHP MYSQL ... 그리고 Stored Procedure[펌] (0) | 2012.10.05 |
fsockopen urlencode (0) | 2012.02.21 |
PHP로 RSS를 간단히 만들기 (0) | 2011.03.07 |
날짜 차 구하기 (0) | 2011.01.05 |