smarty

自分用の備忘録

タイトルのエラーについて、日本語の解決サイトがなかったので、
備忘録として書いておきます。
Smartyの最新をインストールして
MySmarty.phpを作成して、実行したときにエラーが発生。

Smartyをいちからインストール

ここからSmartyの安定版(ver 3.2.19)をDLして、解凍するとこうなる。

f1

サーバーのhtmlフォルダの中に、demoの中身全部と、同列にlibsをULする。

f2

libsはSmartyというフォルダ名に変更する。

libs

Smartyクラスの継承クラス作成

ハイライトしているDefine.phpで下記のCONST変数にこのサイトのルートディレクトリの絶対パスを格納。

  1. ROOT_DIR
  2. PUB_DIR

エラー発生

これでhtml配下に入れるPHPプログラムでは、一番最初に、

と書けばOKなはず。SmartyのDEMOコードindex.phpにアクセスしてみると・・・

smarty – Fatal Error: Call to a member function createTemplate() on a non-object

オブジェクトがありませんとのこと。継承がきちんとできていない様子ですが
ぐぐった結果。

をMySmartyクラスのfunction __construct() の直下に挿入。
これでエラーは消えました。
親のコンストラクタを正確に呼びなさいと。

あとやったこと

template_Cのフォルダと、chacheのフォルダのパーミッションを775→777に変更。
これもSmartyで書き込めないエラーがでたので、慌てて対応。

これでいちからSmartyインストールは完了。
SmartyのDEMOコードindex.phpが動きました。

demo