can someone explain why the parent class destructor is being called twice? I was under the impression that a child class could only call a parent’s destructor by using: parent::__destruct()
class test {
public $test1 = "this is a test of a pulic property";
private $test2 = "this is a test of a private property";
protected $test3 = "this is a test of a protected property";
const hello = 900000;
function __construct($h){
//echo 'this is the constructor test '.$h;
}
function x($x2){
echo ' this is fn x'.$x2;
}
function y(){
print "this is fn y";
}
function __destruct(){
echo '<br>now calling the destructor<br>';
}
}
class hey extends test {
function hey(){
$this->x('<br>from the host with the most');
echo ' <br>from hey class'.$this->test3;
}
}
$obj = new test("this is an \"arg\" sent to instance of test");
$obj2 = new hey();
echo $obj2::hello;
/*
the result:
this is fn x
from the host with the most
from hey classthis is a test of a protected property900000
now calling the destructor
now calling the destructor
*/
This only applies if the
__destructmethod is overridden in the child. For example:… will output:
However, this:
Will output:
If you do not override, it calls the parent destructor implicitly.