본문 바로가기

php

[PHP5]생성자(Constructor)와 소멸자(Destructor)


출처 : 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