親クラスのデストラクタ・メソッド

子クラスにデストラクタ・メソッドがなければ、親クラスのデストラクタ・メソッドを、自動的に呼び出す。

子クラスにデストラクタ・メソッドがあるときは、親クラスのデストラクタ・メソッドを、自動的には呼び出さない。親クラスのデストラクタ・メソッドを呼び出すには、子クラスのデストラクタの中で、parent::__destruct();とする。

書式

子クラスにデストラクタ・メソッドがない場合

class クラスA // クラスを定義
{
    function __destruct() {
        // デストラクタ・メソッド内の処理文;
    }
}
class クラスB extends クラスA // クラスAを継承しクラスBを定義
{
}
$オブジェクト変数名 = new クラスB(); // 「クラスB」のクラスのインスタンスを作成

「クラスA」のクラスのデストラクタ・メソッドを呼び出す。

子クラスにデストラクタ・メソッドがある場合

class クラスA // クラスを定義
{
    function __destruct() {
        // デストラクタ・メソッド内の処理文;
    }
}
class クラスB extends クラスA // クラスAを継承しクラスBを定義
{
    function __destruct() {
        // デストラクタ・メソッド内の処理文;
    }
}
$オブジェクト変数名 = new クラスB(); // 「クラスB」のクラスのインスタンスを作成

「クラスB」のクラスのデストラクタ・メソッドを呼び出す。

parent::__destruct();

class クラスA // クラスを定義
{
    function __destruct() {
        // デストラクタ・メソッド内の処理文;
    }
}
class クラスB extends クラスA // クラスAを継承しクラスBを定義
{
    function __destruct() {
        parent::__destruct();
        // デストラクタ・メソッド内の処理文;
    }
}
$オブジェクト変数名 = new クラスB(); // 「クラスB」のクラスのインスタンスを作成

「クラスA」と「クラスB」のクラスのデストラクタ・メソッドを呼び出す。

サンプル

子クラスにデストラクタ・メソッドがない場合

<?php
class sampleClassA
{
    function __destruct() {
        echo '親クラスのデストラクタ・メソッド<br />';
    }
}
class sampleClassB extends sampleClassA
{
}
$var_class = new sampleClassB();
?>

↓↓↓出力結果↓↓↓

親クラスのデストラクタ・メソッド

子クラスにデストラクタ・メソッドがある場合

<?php
class sampleClassA
{
    function __destruct() {
        echo '親クラスのデストラクタ・メソッド<br />';
    }
}
class sampleClassB extends sampleClassA
{
    function __destruct() {
        echo '子クラスのデストラクタ・メソッド<br />';
    }
}
$var_class = new sampleClassB();
?>

↓↓↓出力結果↓↓↓

子クラスのデストラクタ・メソッド

parent::__destruct();

<?php
class sampleClassA
{
    function __destruct() {
        echo '親クラスのデストラクタ・メソッド<br />';
    }
}
class sampleClassB extends sampleClassA
{
    function __destruct() {
        parent::__destruct();
        echo '子クラスのデストラクタ・メソッド<br />';
    }
}
$var_class = new sampleClassB();
?>

↓↓↓出力結果↓↓↓

親クラスのデストラクタ・メソッド
子クラスのデストラクタ・メソッド

スポンサード リンク

カテゴリー: PHP, オブジェクト指向プログラミング タグ: パーマリンク