デストラクタについて書いていきます。
こいつもインスタンス化した段階で呼ばれます。
あんまり使っているところは見ないのですが、
知識として入れていきます。
基本的に、処理の最後に呼ばれる印象です。
ざっくりした理解なので、実際に書いていきます。
test_sample.php
<?php
require_once(__DIR__ . '/classTest.php');
$app = new classTest();
?>
classTest.php
<?php
class classTest
{
public function __construct(){
echo 'Fist:メッセージ';
}
public function __destruct(){
echo 'Last:メッセージ';
}
}
?>
・実行結果
Fist:メッセージ
Last:メッセージ
では、他のメソッドがある前提で検証していきます。
classTestクラスのsampleメソッドを呼んだ場合どうなるでしょう。
test_sample.php
<?php
require_once(__DIR__ . '/classTest.php');
$app = new classTest();
$app->sample();
?>
classTest.php
<?php
class classTest
{
public function __construct(){
echo 'Fist:メッセージ';
}
public function __destruct(){
echo 'Last:メッセージ';
}
public function sample(){
echo 'sample:メッセージ';
}
}
?>
・実行結果
Fist:メッセージ
sample:メッセージ
last:メッセージ
sampleメソッドが呼ばれた後にデストラクタが呼ばれています。
では、test_sample.phpの中の最後に
testという文字列を出力したらどうなるか検証していきます。
test_sample.php
<?php
require_once(__DIR__ . '/classTest.php');
$app = new classTest();
$app->sample();
echo 'test';
?>
classTest.php
<?php
class classTest
{
public function __construct(){
echo 'Fist:メッセージ';
}
public function __destruct(){
echo 'Last:メッセージ';
}
public function sample(){
echo 'sample:メッセージ';
}
}
?>
・実行結果
Fist:メッセージ
sample:メッセージ
test
Last:メッセージ
ここでわかるのは、インスタン化が行われたプログラム(test_sample.php)の
最後に呼ばれるということですね。