defer в PHPВ Go есть инструкция defer. Она откладывает выполнение операции на момент после возврата текущей функции:func main() { defer fmt.Println("world!") fmt.Print("Hello ")}В PHP мы элементарно добьёмся того же эффекта, если присвоим переменной объект с требуемым кодом в деструкторе. После выполнения скрипта/функции/метода при высвобождении объекта из памяти PHP вызовет этот деструктор:$defer = new class { public function __destruct() { echo 'world!', PHP_EOL; }};echo 'Hello ';Каждый раз писать такую колбасу неудобно. Также может потребоваться запланировать несколько defer. Поэтому мы берём на вооружение библиотечку php-defer/php-defer, которая в стиле node_modules предоставляет нам соответствующую функцию:defer($_, static function (): void { echo 'rld!', PHP_EOL;});defer($_, static function (): void { echo ', wo';});echo 'Hello';Главный вопрос: зачем это нужно, когда есть finally? Удобство defer состоит в том, что его можно использовать в требуемом месте, не реорганизуя код. Прилагаю скриншот рефакторинга TyphoonReflectorMemoryTest — там всё очень наглядно. Кстати, этот тест я уже упоминал в посте Тест на циклические ссылки.Cпасибо @Danil42Russia за знакомство с php-defer.В Laravel тоже есть такая функция, но её не получится использовать вне фреймфорка, спасибо @YourKey и @kafkianskiy.