Code: Alles auswählen
<?php
class A
{
public $b;
public function __construct()
{
$this->b = new B($this);
}
public function __destruct()
{
print 'A::DTor' . PHP_EOL;
}
}
class B
{
public $a;
public function __construct(A &$a)
{
$this->a = &$a;
}
public function __destruct()
{
print 'B::DTor' . PHP_EOL;
}
}
function foo()
{
print 'foo starts' . PHP_EOL;
$a = new A();
$a = null;
print 'foo ends' . PHP_EOL;
}
foo();
print 'end' . PHP_EOL;
Code: Alles auswählen
foo starts foo ends end A::DTor B::DTor
Code: Alles auswählen
foo starts foo ends A::DTor B::DTor end
Code: Alles auswählen
<?php
class A
{
public $b;
public function __destruct()
{
print 'A::DTor' . PHP_EOL;
}
}
class B
{
public $a;
public function __destruct()
{
print 'B::DTor' . PHP_EOL;
}
}
function foo()
{
print 'foo starts' . PHP_EOL;
$a = new A();
$b = new B();
$a->b = &$b;
$b->a = &$a;
$a = null;
print 'foo ends' . PHP_EOL;
}
foo();
print 'end' . PHP_EOL;
Code: Alles auswählen
foo starts A::DTor foo ends B::DTor end
Code: Alles auswählen
foo starts foo ends end A::DTor B::DTor