Smarty バージョンアップで Uncaught exception ‘SmartyException’…
Smarty を利用してPHPのプログラムを開発していくことが多いのですが最近新しくサーバーを立ち上げてみました。
PHPや、ライブラリ系、MySQLなどのデータベース系などを刷新して、新しいリリースバージョン を使ってのサーバー構築です。
新しいバージョンでの構築は今までの処理系を見直す良いチャンスだと思います。
さて、そんなこんなでさくさくと設定を進めていたのですが最終段階のWEBシステムをアップロードしてシステムの稼働チェックをした際に見慣れないエラーが発生しました。
Fatal error: Uncaught exception 'SmartyException' with message 'PHP5 requires you to call __construct() instead of Smarty()' in /usr/include/php/include/Smarty/sysplugins/smarty_internal_templatebase.php:755 |
PHPのクラス定義などの仕様変更などもあって、今までの呼び出し方ではよろしくない様子。
下記は修正前のクラス定義の例文です。
require('Smarty/Smarty.class.php'); class Smarty_PICMO extends Smarty { function Smarty_PICMO() { $this->Smarty(); $this->template_dir = '任意のパス'; $this->compile_dir = '任意のパス'; $this->config_dir = '任意のパス'; $this->cache_dir = '任意のパス'; } } |
下記のように変更する必要があります。
require('Smarty/Smarty.class.php'); class Smarty_PICMO extends Smarty { function __construct() { parent::__construct(); $this->template_dir = '任意のパス'; $this->compile_dir = '任意のパス'; $this->config_dir = '任意のパス'; $this->cache_dir = '任意のパス'; } } |
組み上がったプログラムがバージョンアップによって動かなくなるとかなり背筋が凍る思いをしますが・・・
幸いこの程度の修正で済んでよかったと喜ぶべきだと思います。
僕の作ったプログラムはテンプレート呼び出し位置をセレクターで切り替えていたので全ソース書き換えになりましたが
関連のありそうなエントリ
この記事に対するコメントはまだ登録されていません。