子クラスにデストラクタ・メソッドがなければ、親クラスのデストラクタ・メソッドを、自動的に呼び出す。
子クラスにデストラクタ・メソッドがあるときは、親クラスのデストラクタ・メソッドを、自動的には呼び出さない。親クラスのデストラクタ・メソッドを呼び出すには、子クラスのデストラクタの中で、parent::__destruct();
とする。
書式
子クラスにデストラクタ・メソッドがない場合
class クラスA // クラスを定義
{
function __destruct() {
// デストラクタ・メソッド内の処理文;
}
}
class クラスB extends クラスA // クラスAを継承しクラスBを定義
{
}
$オブジェクト変数名 = new クラスB(); // 「クラスB」のクラスのインスタンスを作成
{
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」のクラスのインスタンスを作成
{
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」のクラスのインスタンスを作成
{
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();
?>
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();
?>
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();
?>
class sampleClassA
{
function __destruct() {
echo '親クラスのデストラクタ・メソッド<br />';
}
}
class sampleClassB extends sampleClassA
{
function __destruct() {
parent::__destruct();
echo '子クラスのデストラクタ・メソッド<br />';
}
}
$var_class = new sampleClassB();
?>
↓↓↓出力結果↓↓↓
親クラスのデストラクタ・メソッド
子クラスのデストラクタ・メソッド
子クラスのデストラクタ・メソッド