이 글에서는 주로 PHP의 constructor 및 destructor 분석을 소개합니다. 이 글에서는 코드예제를 사용하여 PHP의 생성자와 소멸자를 설명
constructor
void construct ([ mixed $args [, $... ]] )
<?php class BaseClass { function construct() { print "In BaseClass constructor\n"; } } class SubClass extends BaseClass { function construct() { parent::construct(); print "In SubClass constructor\n"; } } class OtherSubClass extends BaseClass { // inherits BaseClass's constructor } // In BaseClass constructor $obj = new BaseClass(); // In BaseClass constructor // In SubClass constructor $obj = new SubClass(); // In BaseClass constructor $obj = new OtherSubClass(); ?>
In BaseClass 생성자
In BaseClass 생성자
In SubClass 생성자
In BaseClass 생성자
오류 메시지를 생성하지 않습니다.
PHP 5.3.3부터네임스페이스에서 클래스 이름과 동일한 이름을 가진 메서드는 더 이상 생성자로 사용되지 않습니다. 이 변경 사항은 네임스페이스에 없는 클래스에는 영향을 주지 않습니다.
예제#2 네임스페이스 클래스의 생성자<?php namespace Foo; class Bar { public function Bar() { // treated as constructor in PHP 5.3.0-5.3.2 // treated as regular method as of PHP 5.3.3 } } ?>
Destructor
void destruct(void)
객체 지향 언어와 유사한 소멸자 개념을 도입했습니다. 소멸자는 객체에 대한 모든 참조가 제거되거나 객체가 명시적으로 소멸될 때 실행됩니다.
<?phpclass MyDestructableClass { function construct() { print "In constructor\n"; $this->name = "MyDestructableClass"; } function destruct() { print "Destroying " . $this->name . "\n"; }} $obj = new MyDestructableClass();?>
모든 HTTP 헤더가 전송된 후 스크립트가 닫힐 때 소멸자가 호출됩니다. 스크립트가 닫힐 때의 작업 디렉터리는 SAPI(예: Apache)에 있을 때와 다를 수 있습니다.
참고:
소멸자(스크립트가 종료될 때 호출됨)에서 예외를 발생시키려고 하면 치명적인 오류가 발생합니다.
위 내용은 php: 생성자와 소멸자 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!