多分に漏れず、初心者がはまりそうな部分を書いておきます。
__constructによるコンストラクタの継承による不具合発生。
PHP4までの親コンストラクタの継承は「$this->親クラス名」で継承されていましたが__constructで書こうとすると思わぬエラーが出ることがあります。
Smartyの拡張セットアップも「$this->Smarty();」となっていますね。
http://www.smarty.net/docsv2/ja/installing.smarty.extended.tpl
これを「parent::__construct()」で継承するまではいいのですが、親コンストラクタのほうを__constructに変更するとエラーが出ます。
class Test { public function __construct() { echo "Testコンストラクタです\n"; } } class TestChild extends Test { public function __construct() { $this->Test(); //エラー echo "TestChildのコンストラクタです\n"; } }
冷静に考えれば$thisで親コンストラクタを呼び出すこと自体変なので、新しい親コンストラクタは「parent::__construct()」で呼び出してください。
class Test { public function __construct() { echo "Testコンストラクタです\n"; } /* //古い書き方であっても大丈夫です public function Test() { echo "Testオブジェクトを生成します\n"; } */ } class TestChild extends Test { public function __construct() { parent::__construct(); echo "TestChildのコンストラクタです\n"; } }
であれば親が古い書き方であってもエラーは出ません。
0 件のコメント:
コメントを投稿