プラグインディレクトリを追加しようとして怒られる。
参照させるプラグインディレクトリを追加するために
$Smarty->plugins_dir[] = './plugins';とかやってたら
Notice: Indirect modification of overloaded property Smarty::$plugins_dir has no effect
って怒られる。つまり$plugins_dirプロパティはマジックメソッド__get() によって返される値になったということ。
その変数への参照がないので変更ができません。
探してみると同じようなことでやられたひとがごろごろ出てくる。
(例えば)
http://blog.still-laughin.com/archives/2011/11/smarty_31.html
Smarty3.1から2系以前の記法で動かなくなったって話で、
setPluginsDir()とかaddPluginsDir()を使いなさいってことでした。
3.1以降での書き方はこう
$smarty->addPluginsDir(
array(
'dir1/plugins/',
'dir2/plugins/',
)
);または$smarty->setPluginsDir(
array(
$smarty->plugins_dir[0],
'dir/plugins/',
)
);
addPluginsDir()の場合は追加したものが後ろにつくので、意図的に走査する順番を変えたいなら
setPluginsDir()でセットしなおした方がよいでしょう。
マニュアルを見るとわかるのですが、この記法はPluginディレクトリ以外も同様です。
以下ディレクトリ関係のメソッドです。
- get
- getCacheDir()
- getCompileDir()
- getConfigDir()
- getPluginsDir()
- getTemplateDir()
- set
- setCacheDir()
- setCompileDir()
- setConfigDir()
- setPluginsDir()
- setTemplateDir()
- add
- addConfigDir()
- addPluginsDir()
- addTemplateDir()
まだ続く予定です。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。