<?php
class Tr
{
public $s;
public static $xx;
/**
* Tr constructor.
* @param $s
*/
public function __construct($s)
{
$this->s = $s;
}
public function __destruct()
{
echo "__destruct $this->s" . PHP_EOL;
}
}
function b() {
$tr = new Tr('b');
echo 'b' . PHP_EOL;
try {
c($tr);
}
catch(\Exception $ex) {
Tr::$xx = $ex;
}
// If exception thrown here, Tr::__destruct is called
// throw new \Exception('ee');
// Or if you call c() without passing $tr, Tr::__destruct is called
}
/**
* @param Tr $tr
*/
function c($tr = null) {
throw new \Exception('ee');
}
b();
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
b
__destruct b