>백엔드 개발 >PHP 튜토리얼 >PHP 소멸자에 대한 올바른 이해

PHP 소멸자에 대한 올바른 이해

黄舟
黄舟원래의
2017-07-02 10:10:371327검색

construct라는 클래스에서 함수를 선언하면 이 함수는 constructor로 처리되며 객체 인스턴스를 생성할 때 실행됩니다. 다른 함수와 마찬가지로 두 개의 밑줄이 있습니다. 생성자는 매개변수나 기본값을 가질 수 있습니다. 클래스를 정의하여 객체를 생성하고 해당 속성을 모두 명령문에 넣을 수 있습니다.

또한 destruct라는 함수를 정의할 수 있으며, PHP는 객체가 소멸되기 전에 호출됩니다. PHPdestructor라고 합니다.

상속은 클래스의 강력한 기능입니다. 하나의 클래스(하위 클래스/파생 클래스)가 다른 클래스(상위 클래스/기본 클래스)를 상속할 수 있습니다. 파생 클래스에는 모든 속성과 메서드가 포함됩니다. 기본 클래스에 추가할 수 있으며 파생 클래스에 다른 속성과 메서드를 추가할 수도 있습니다. 3.1.2에 표시된 것처럼 확장 키워드를 사용하여 클래스를 상속할 수도 있습니다.

생성자가 다른 메서드와 함께 상속되면 객체 생성 시 생성자가 실행되지 않습니다.
이 기능이 필요한 경우 챕터에서 언급한 :: 연산자를 사용해야 합니다. 2. 네임스페이스를 가리킬 수 있습니다. 부모는 부모 클래스 네임스페이스를 가리키고 parent::construct를 사용하여 부모 클래스의 생성자를 호출할 수 있습니다.

일부 객체 지향 언어에서는 생성자의 이름을 다음과 같이 지정합니다. PHP의 처음 몇 버전에서도 마찬가지였으며 이 메서드는 여전히 작동합니다. 즉, Animal 클래스의 이름을 지정하고 거기에 Animal too 메서드라는 클래스를 생성하면 이 메서드는 생성자입니다. 생성자와 클래스 이름이 같은 함수가 모두 있으면 PHP는 생성자로 간주합니다. 이렇게 하면 이전 PHP 버전에서 작성된 클래스를 계속 사용할 수 있습니다. 하지만 새 스크립트(PHP5)에서는 생성자를 사용해야 합니다.

PHP 생성자를 선언하는 새로운 방법을 사용하면 생성자가 속한 클래스의 이름에 관계없이 고유한 이름을 가질 수 있습니다. 이렇게 하면 클래스를 변경할 수 있습니다. 생성자의 이름을 변경할 필요가 없습니다. 다른 클래스 메소드와 마찬가지로 생성자에 액세스 메소드를 제공하면 특정 범위에서 객체를 인스턴스화하는 기능에 영향을 미칠 수 있습니다. 이를 통해 싱글톤 패턴

PHP 소멸자와 같은 일부 고정된 디자인 패턴을 구현할 수 있습니다. 소멸자는 생성자와 반대입니다. PHP는 생성자를 호출하여 메모리에서 개체를 삭제합니다. 기본적으로 PHP는 개체의 속성이 차지하는 메모리만 해제하고 개체와 관련된 리소스를 삭제하면 사용 후 임의의 코드를 실행하여 메모리를 지울 수 있습니다.

PHP가 스크립트가 더 이상 개체와 연결되어 있지 않다고 판단하면 PHP 소멸자가 네임스페이스 내의 함수에서 호출됩니다. 전역 변수의 경우 이 일이 발생합니다. 개체를 명시적으로 삭제하려면 개체를 가리키는 변수에 다른 값을 할당하면 됩니다. 일반적으로 변수는 값을 NULL로 할당하거나 unset을 호출합니다. Counter 클래스는 생성자에서 증가하고 PHP 소멸자에서 감소합니다.

클래스를 정의하면 new를 사용하여 이 클래스의 인스턴스를 만들 수 있습니다. 인스턴스는 어셈블리 라인에 배치된 구성 요소입니다. New에는 클래스 이름이 필요하고 클래스의 인스턴스를 반환합니다. 생성자에 매개 변수가 필요한 경우 new 뒤에 매개 변수를 입력해야 합니다.

< ?php   
class Counter { private static $count = 0;   
function construct() { self::$count++; }   
function destruct() { self::$count--; }   
function getCount() { return self::$count; } }   
//建立第一个实例  
$c = new Counter();  
 //输出1   
print($c->getCount() . "<br>\n");   
//建立第二个实例   
$c2 = new Counter();   
//输出2   
print($c->getCount() . "<br>\n");   
//销毁实例   
$c2 = NULL;   
//输出1  
 print($c->getCount() . "<br>\n");   
?>

새 PHP 소멸자를 만들 때 인스턴스마다 메모리는 모든 속성을 저장할 준비가 됩니다. 각 인스턴스에는 고유한 속성 집합이 있습니다. 그러나 메서드는 모든 인스턴스에서 공유되는 클래스에 의해 결정됩니다.

위 내용은 PHP 소멸자에 대한 올바른 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.