我正在观看关于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!
因为我实例化一个对象,所以它通过运动,然后它创建一个新的?这是非常无关紧要的,但我只是想了解编程的内部工作原理。
谢谢大家。
答案 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!"