__destruct()) & Resource CleanupA destructor is a magic method (__destruct()) executed automatically when an object is destroyed, unset (unset($obj)), or when the PHP script execution terminates.
flowchart TD
A["new DatabaseConnection()"] --> B["__construct() Opens DB Socket / File Handle"]
B --> C["Object Used in Application Script"]
C --> D["Script Ends OR unset($obj) Called"]
D --> E["__destruct() Invoked Automatically"]
E --> F["Closes Socket / Flushes Buffers / Cleans Resources"]
<?php
declare(strict_types=1);
class FileLogger
{
private $fileHandle;
public function __construct(string $filename)
{
$this->fileHandle = fopen($filename, 'a');
echo "Constructor: Opened log file handle for '$filename'.
";
}
public function log(string $message): void
{
fwrite($this->fileHandle, date('Y-m-d H:i:s') . " | $message
");
}
// Destructor executed automatically when object is destroyed
public function __destruct()
{
if ($this->fileHandle) {
fclose($this->fileHandle);
echo "Destructor: Closed file handle safely.
";
}
}
}
// Script scope block
$logger = new FileLogger(__DIR__ . '/app_test.log');
$logger->log("Executing critical system task...");
// Destroy object explicitly
unset($logger);
echo "Script Execution Continues After Destructor Finished.
";
What magic method is automatically executed when an object is destroyed or goes out of scope? (__destruct())
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.