2013-03-04追記


以下の記述で私が参照していたのは、Smartyバージョン2のドキュメントでした。Smartyバージョン3のドキュメントには、parent::__construct()とする書き方が載っています。




Smartyのドキュメントには、Smartyクラスを継承したクラスの書き方の例として、以下の様なクラスが載っています。

class Smarty_GuestBook extends Smarty {

   function Smarty_GuestBook()
   {

        // クラスのコンストラクタ。
        // これらは新しいインスタンスで自動的にセットされます。

        $this->Smarty();

        $this->template_dir = '/web/www.example.com/guestbook/templates/';
        $this->compile_dir  = '/web/www.example.com/guestbook/templates_c/';
        $this->config_dir   = '/web/www.example.com/guestbook/configs/';
        $this->cache_dir    = '/web/www.example.com/guestbook/cache/';

        $this->caching = true;
        $this->assign('app_name', 'Guest Book');
   }

}
引用元:http://www.smarty.net/docsv2/ja/installing.smarty.extended.tpl

しかし、この書き方だと、PHP5.4.10/Smarty3.1.13の環境では、コンストラクターの呼び出し時に例外が発生して止まりました。以下のように書けば動きます(太字が変更箇所。また、変更箇所に関係ない部分は省略)。

class Smarty_GuestBook extends Smarty {

   function Smarty_GuestBook()
   {
        parent::__construct();// $this->Smarty();ではダメ
   }
}

あと、Smarty_GuestBook()メソッドはコンストラクターとして働いていますが、PHP5ではクラス名と同名のメソッド名を付けるべきではないので、__construct()にすべきでしょうね。