メンテナンス・トラブルシュート - PHP - Call to undefined method Smarty()

 
1. 概要
2. 調査
3. 解決

1. 概要

 わたしが扱っているいくつかのサイトは PHP のテンプレートエンジン smarty を使用しています。  smarty については別の機会があれば書くことがあるかもしれませんが、本題は。  smarty で記述しているサイトが突然、見えなくなったのです。  そお言えば、smarty の ports を更新した記憶があるぞ。  apache のログを見ると

PHP Fatal error:  Call to undefined method Smarty()
 と出ている。

2. 調査

 前のバージョンをとっといてよかった

/usr/local/share/smarty/Smarty.class.php
 を前のバージョンと比較してみると・・・。

var $_version              = '2.6.27';
 が

var $_version              = '2.6.29';
 になっている。  当たり前の話だわな。バージョン変わったんだから。  で、真相は

function Smarty()
 の箇所が

public function __construct()
 になっているのでした。  まあ、基本的な定義はいちいち呼び出さなくてもコンストラクタでやっちゃうってことですな。  わたしは

class mySmarty extends Smarty
 というローカルクラスをつくっているのですが、そこのコンストラクタで

$this->Smarty();
 と記述していたので、表題のようなエラーが出力されることとなったわけです。

3. 解決

 まあ、解決は書くと簡単なことです。  前項の

$this->Smarty();
 を記述してある行を削除するだけのことでした。