bhylu.com

Advertisements

PHP Destructors

A destructor runs as an object is destroyed according to PHP’s lifetime rules. It can help explain cleanup, but essential transactions need an explicit success/failure boundary.

How it works

__destruct may run when the last reference is released or during shutdown. Timing and shutdown conditions make it a poor place to decide whether a loan transaction succeeded or to send a critical response. Use try/finally and explicit close/commit operations where ownership matters. This example prints a message solely to expose a simple object lifetime in a CLI lab; doing so during web shutdown could corrupt a response.

Run it locally

Run this complete source locally with PHP 8.2 or newer. Save it using the filename shown and run the command below. PHP is not currently available in Bhylu’s browser playground. Apache and MySQL are not needed for an ordinary CLI example.

php -l destructors.php
php destructors.php

Download this source as a local PHP lab file. Keep lab files separate from the Bhylu project and production data.

Example

PHP 8.2+ · destructors.php

<?php
declare(strict_types=1);

class LabMarker {
    public function __destruct() { echo "Marker released\n"; }
}
$marker = new LabMarker();
echo "Before release\n";
unset($marker);
echo "After release\n";

Expected result

Before release
Marker released
After release

There is one ordinary reference, so unsetting it releases this object in the demonstrated execution. If another variable retained the object, this particular unset would not finish its lifetime. The output ordering illustrates the mechanism without claiming that every shutdown path offers the same application guarantees.

Check the official PHP manual for detailed version and API contracts.