@ PHP

OOP:デストラクタによるリファレンスの解放

デストラクタは、オブジェクトが破棄されて、オブジェクトへのリファレンスが全て無くなったタイミングで呼び出されます。

クラスの中で使用したリソースを破壊するなど、主に終了するときの処理を記述するのが一般的です。

デストラクタのアクセス制限は「public」のみです。

root
 ├── Person.php // Person クラスファイル
 └── destruct.php // 実行ファイル

Person.php

<?php

class Person
{

    public $firstName;

    public $lastName;

    public function __construct(string $firstName, string $lastName)
    {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

    public function __destruct()
    {
        print '<p>' . __CLASS__ . 'オブジェクトが破棄されました。</p>';
    }

    public function show()
    {
        print "氏名:{$this->lastName}{$this->firstName}";
    }

}

destruct.php

<?php
require_once ('Person.php');

$p = new Person('太郎', '山田');

$p->show();

スクリプト終了のタイミングでオブジェクトが破壊され、デストラクタが呼び出されていることが確認できます。