解释为什么会发生这种情况

时间:2016-05-28 13:34:35

标签: php

我正在观看关于PHP的OOP教程,我来到构造函数/析构函数段。当我实例化一个对象时,它显然会通过构造函数,然后解构它。

这是我的代码:

<?php

  class Person {

    var $first_name;
    var $last_name;

    function __construct($firstName, $lastName) {

      $this->first_name = $firstName;
      $this->last_name = $lastName;

      echo 'Hi, my name is: ' . $this->first_name . ' ' . $this->last_name . '!<br>';

    }

      function __destruct() {

        echo "Class objects are now being destroyed!<br>";

      }

  }

  $person1 = new Person('Ringo', 'Starr');
  $person2 = new Person('John', 'Lennon');

?>

现在,当我运行我的代码时,它会回复:

Hi, my name is: Ringo Starr!
Hi, my name is: John Lennon!
Class objects are now being destroyed!
Class objects are now being destroyed!

但是,从逻辑上讲,至少在我看来,代码不应该回应:

Hi, my name is: Ringo Starr!
Class objects are now being destroyed!
Hi, my name is: John Lennon!
Class objects are now being destroyed!

因为我实例化一个对象,所以它通过运动,然后它创建一个新的?这是非常无关紧要的,但我只是想了解编程的内部工作原理。

谢谢大家。

1 个答案:

答案 0 :(得分:0)

<?php

//Just for Explaination
function funcContext()
{//CONTEXT EXISTS
    $person1 = new Person('Ringo', 'Starr');
    // person1 __constructed
    //"Hi, my name is: Ringo Starr!"
    //alive

    $person2 = new Person('John', 'Lennon');
    // person2 __constructed
    // "Hi, my name is: John Lennon!"
    // alive

    //They will remain alive till this context

}//CONTEXT DESTROYED
//they will be destroyed
//"Class objects are now being destroyed!"
//"Class objects are now being destroyed!"