電子書籍の厳選無料作品が豊富!

こんにちはよろしくお願いします。
PHP4でSmarty派生クラスを定義する方法を教えてください。
PHP5のサンプルコードで次のようなものがありました。
PHP4では,「private」が使えないらしいとか,「__construct」ではなくてクラス名がコンストラクタ名になるとかでうまくいかないようです。どのように修正すればよいのでしょうか?
また,「__destruct」はどのようにすれば良いのでしょうか?コンストラクタ名とデストラクタ名が同じでよいのでしょうか?
よろしくお願いします。
<?php
require_once("DB.php");
require_once("Smarty/libs/Smarty.class.php");
class MySmarty extends Smarty {
private $_db;
public function __construct() {
$this->Smarty();
$this->template_dir="../templates";
$this->compile_dir="../templates_c";
$this->_db=DB::connect("sqlite://localhost/samples.db");
}
public function __destruct() {
$this->_db->disconnect();
}
public function getDb() {return $this->_db;}
}
?>

A 回答 (1件)

class MySmarty extends Smarty {


var $_db;
function MySmarty() {
parent::Smarty();//コレで親を叩ける(はず)
$this->template_dir="../templates";
$this->compile_dir="../templates_c";
$this->_db=DB::connect("sqlite://localhost/samples.db");
}

function disconnect(){
$this->_db->disconnect();
}

/**
* コイツの明示的に叩いて デストラクタ代わり
* @param void
* @return void
*/
function destructor(){
$this = null;
}

function getDb() {return $this->_db;}
}
//end of class


PHP4の環境が手元にないので動かしてみてないので動かないかも?


php4にはデストラクタがないので明示的に叩いてやる必要があります
まぁ、PHP4だろうと5だろうと PHPってガベージコレクタの動きかかなり怪しいですけどね

新規システムであれば、わざわざPHP4を使うような時代でもないのでphp5にしてしまっては?
    • good
    • 0
この回答へのお礼

inu2 さん,ありがとうございます。
早速やってみましたが,
Fatal error: Cannot instantiate non-existent class: mysmarty in /・・・・/****.php on line 14
となり,これまでと同様のエラーが出ました。
おっしゃるとおり,PHP5にすればいいのですよね。やっぱり,レンタルサーバー別のところにしようかな・・・?

お礼日時:2008/02/14 14:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!