>  기사  >  백엔드 개발  >  클래스에서 생성자와 소멸자를 구별할 수 있습니다.

클래스에서 생성자와 소멸자를 구별할 수 있습니다.

WBOY
WBOY원래의
2021-10-25 10:33:353133검색

이전 글에서는 "PHP에서 객체를 인스턴스화하고 객체 멤버에 액세스하는 방법은 무엇인가요?"를 가져왔습니다. "에서는 객체를 인스턴스화하고 객체 멤버에 액세스하는 방법을 자세히 소개합니다. 이 기사에서는 PHP의 생성자와 소멸자를 살펴보겠습니다. 모든 사람에게 도움이 되기를 바랍니다!

클래스에서 생성자와 소멸자를 구별할 수 있습니다.

PHP 클래스의 생성자는 생성자라고도 합니다. new 키워드를 사용하여 개체를 인스턴스화하면 개체가 생성될 때 자동으로 호출될 수 있습니다. 해당 함수는 소멸자입니다. 소멸자의 역할은 생성자와 정반대입니다. 소멸자는 객체가 소멸되기 전에 작업을 수행할 수 있습니다. 그럼 이 두 가지 기능을 함께 살펴보겠습니다.

<strong><span style="font-size: 20px;">__construct()</span></strong>: 생성자/메서드<strong><span style="font-size: 20px;">__construct()</span></strong>:构造函数/方法

在PHP的类中,我们使用__construct()作为类的构造函数,构造函数是当对象被创建时,类中被自动调用的第一个函数,并且一个类中只能存在一个构造函数,并且需要注意的是,如果构造函数中有参数的话,那么实例化也需要传入对应的参数。

构造函数创建的语法格式如下:

public function __construct(参数列表){
    ... ...
}

需要注意的是,其中的参数列表是可选的,不需要的时候可以省略。construct前面是两个下划线__

实例如下:

<?php
    class study{
        public $study1, $study2, $study3,$study4;
        public function __construct($str1, $str2, $str3,$str4){
            $this -> study1 = $str1;
            $this -> study2 = $str2;
            $this -> study3 = $str3;
            $this -> study4 = $str4;
            $this -> demo();
        }
        public function demo(){
            echo $this -> study1.&#39;<br>&#39;;
            echo $this -> study2.&#39;<br>&#39;;
            echo $this -> study3.&#39;<br>&#39;;
            echo $this -> study4.&#39;<br>&#39;;
        }
    }
    $object = new study(&#39;好好学习&#39;,&#39;天天向上&#39;,&#39;福如东海&#39;,&#39;寿比南山&#39;);
?>

示例中的$this表示当前调用的对象。输出结果:

클래스에서 생성자와 소멸자를 구별할 수 있습니다.

由上述结果,我们通过,我们通过__construct()构造函数,就调用了类中创建的对象。

<strong><span style="font-size: 20px;">__destruct()</span></strong>:析构函数/方法

刚才讲到的__construct()构造函数,它会在对象被创建的时候调用,与之相对应的就是析构函数,析构函数的作用与构造函数相反,析构函数只有当对象从内存中删除之前才会被自动调用,在PHP中有垃圾回收机制,当对象不能被访问就会自动启动垃圾回收机制,析构函数就是垃圾回收对象前调用。

__destruct()函数的语法格式如下:

public function __destruct(){
    ... ...
}

需要注意的是,与构造函数类似,destruct前面也是两个下划线__;不同的是析构函数不能带有任何参数。

实例如下:

<?php
    class Website{
        public $study1, $study2;
        public function __construct(){
            echo &#39;构造函数被调用了<br>&#39;;
        }
        public function __destruct(){
            echo &#39;析构函数被调用了<br>&#39;;
        }
    }
    $object = new Website();
    echo &#39;好好学习<br>&#39;;
    echo &#39;天天向上<br>&#39;;
?>

输出结果:

클래스에서 생성자와 소멸자를 구별할 수 있습니다.

由上述实例可以看出,构造函数与析构函数调用的时间不同,构造函数在对象被创建时自动调用,析构函数在对象被垃圾收集器收集前被调用。

<strong><span style="font-size: 20px;">$this</span></strong>:当前对象

在PHP面对对象编程中,对象被创建之后,在对象中的每个成员方法里,都会存在一个特殊的对象引用“$this”,与连接符->

PHP 클래스에서는 클래스의 생성자로 __construct()를 사용합니다. 생성자는 객체가 생성될 때 사용됩니다. 첫 번째 클래스에서 자동으로 호출되는 함수이며 클래스에는 생성자가 하나만 있을 수 있습니다. 생성자에 매개변수가 있는 경우 인스턴스화를 위해 해당 매개변수도 전달되어야 한다는 점에 유의해야 합니다.

생성자가 생성하는 구문 형식은 다음과 같습니다.

$this -> 成员属性;
$this -> 成员方法(参数列表);

매개변수 목록은 선택사항이며 필요하지 않은 경우 생략할 수 있다는 점에 유의하세요. 구문 앞에 두 개의 밑줄 __이 옵니다.

예제는 다음과 같습니다. 예에서

<?php
    class Website{
        public $name;
        public function __construct($name){
            $this -> name = $name;
            $this -> name();
        }
        public function name(){
            echo $this -> name;
        }
    }
    $object = new Website(&#39;好好学习&#39;);
?>
클래스에서 생성자와 소멸자를 구별할 수 있습니다.$this는 현재 호출되는 객체를 나타냅니다. 출력 결과:

위 결과를 바탕으로 __construct() 생성자를 전달하여 클래스에서 생성된 객체를 호출했습니다.

🎜<strong><span style="max-width:90%">__destruct()</span></strong>: 소멸자/메서드🎜🎜방금 언급한 __construct() 생성자는 객체가 생성될 때 호출되며, 소멸자입니다. 소멸자는 생성자와 반대입니다. 소멸자는 객체가 메모리에서 삭제될 때까지 자동으로 호출되지 않습니다. PHP에는 객체에 액세스할 수 없으면 자동으로 재활용 메커니즘이 시작됩니다. , 소멸자는 개체의 가비지 수집 전에 호출됩니다. 🎜🎜🎜__destruct()함수의 구문 형식은 다음과 같습니다: 🎜rrreee🎜생성자와 유사하게 destruct 앞에는 두 개의 밑줄 __이 있습니다. code>; 차이점은 소멸자는 어떤 매개변수도 취할 수 없다는 것입니다. 🎜🎜🎜예제는 다음과 같습니다. 🎜rrreee🎜출력 결과: 🎜🎜🎜<img src="https://img.php.cn/upload/image/227/432/988/1635127650312688.png" title=" 1635127650312688.png " alt="클래스에서 생성자와 소멸자를 구별할 수 있습니다.">🎜🎜위의 예에서 볼 수 있듯이 생성자와 소멸자가 서로 다른 시점에 호출됩니다. 생성자는 객체 생성 시 자동으로 호출되고 소멸자는 호출됩니다. 이전에 가비지 수집기가 호출된 경우입니다. 🎜🎜<code><strong><span style="max-width:90%">$this</span></strong>: 현재 개체🎜🎜PHP 개체 지향 프로그래밍에서는 개체가 생성된 후 개체의 각 멤버 메서드에 특수 개체 참조 "$this code>"는 커넥터 ->와 함께 사용되며 특히 개체의 내부 멤버 간의 액세스를 완료하는 데 사용됩니다. 예는 다음과 같습니다. 🎜rrreee🎜클래스의 멤버 속성에 액세스할 때는 속성 이름만 따라가면 됩니다. $ 기호를 추가할 필요는 없습니다. $this는 객체 없이만 사용할 수 있습니다. , $this가 없습니다. 🎜🎜예제는 다음과 같습니다. 🎜🎜rrreee🎜출력 결과: 🎜🎜🎜🎜🎜관심이 있으시면 "🎜PHP Video Tutorial🎜"을 클릭하여 PHP 지식에 대해 자세히 알아볼 수 있습니다. 🎜

위 내용은 클래스에서 생성자와 소멸자를 구별할 수 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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