[PHP-users 22720]Re: PerlのDESTORYメソッドに匹敵するもの
KOYAMA Tetsuji
koyama @ hoge.org
2004年 7月 22日 (木) 22:22:55 JST
小山です。
At Thu, 22 Jul 2004 22:00:42 +0900,
大島由喜枝 wrote:
> さっそく register_shutdown_function() で インスタンスデストラクタ
> 的な使い方ができるかどうかやってみました。
>
> 今回私がやりたかったデータベース接続の切断はできませんでした。
> というのも、register_shutdown_function() ではメソッドは指定できないので
> インスタンス変数にアクセスすることができないからです。
> register_shutdown_function() にメソッドが指定できないので以下のように
> クラスの外に destory() をつくったところでインスタンス変数 $db にアクセス
> できないので、意味ないでした。。。。。
>
> class Data {
> var $db;
> function Data() {
> ...
> register_shutdown_function('destory');
> }
> ...
> }
> function destory() {
> ...
> }
register_shutdown_function を利用したなんちゃってデストラクタを使い
たいのであれば、PEAR のサブクラスにするのが楽ちんです。
こんな感じに _クラス名 というメソッドがあれば、それをプログラム終了
時に呼び出してくれます。
require_once 'PEAR.php';
class Data extends PEAR {
var $db;
function Data() {
parent::PEAR(); // 親コンストラクタの呼び出し
...
}
function _Data() { // なんちゃってデストラクタ
$this->destroy();
}
function destroy() {
....
}
}
--
小山 哲志@ビート・クラフト
koyama @ beatcraft.com
koyama @ hoge.org
PHP-users メーリングリストの案内