プラグインディレクトリを追加しようとして怒られる。
参照させるプラグインディレクトリを追加するために
$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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。