/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
/**
* Takes unknown classes and loads plugin files for them
* class name format: Smarty_PluginType_PluginName
* plugin filename format: plugintype.pluginname.php
*
* @param string $plugin_name class plugin name to load
* @param bool $check check if already loaded
* @return string |boolean filepath of loaded file or false
*/
public function loadPlugin($plugin_name, $check = true)
引用来自“宏哥”的答案
引用来自“南湖船老大”的答案
引用来自“欣儿”的答案
引用来自“南湖船老大”的答案
。。。。
插件的命名和存放路径都是有规律的,这个不言自明。这还需要找吗?不需要
几乎所有的烂玩意, 你都如此熟悉
你用什么时间来做真正有意义的事情呢?
让你看看什么叫做 Template:
我厂可是Java和PHP都在用的,PHP的种种又怎么会不知道。至于smarty算不算烂,我个人觉得是除出了原生PHP外的最好选择。就楼上用正则搞得这种练手的东西,就不做评价了。我也写过类似的模板引擎,但最终还是选择了用smarty或者直接PHP代码.单纯的使用正则和语法糖不能解决问题,反而会引入问题。只有像smarty和twig这种基于parse的模板引擎,才能把扩展性和兼容性做到最好。
我也没空测试和细看,就随便问几个问题,这也是我在写PHP的模板引擎过程中先后遇到的问题:
1.任意目录递归include的问题是否实现,也就是所谓的子模板和layout?
2.多层变量/多维数组解析是否实现,比如blog.user.name;
3.在标签里直接调用PHP内置函数和自定义函数是否实现?
4.类似smarty里的module和plugin你又如何解决?没有这个东西的话,模板引擎会比PHP还复杂;
5.报错的处理。如果模板里有语法错误,报错能否精确到模板的精确行,而不是一堆莫名其妙的错误提示?
如果不能很好的解决上面提到的几个问题,那还不如原生PHP。
引用来自“南湖船老大”的答案
引用来自“欣儿”的答案
引用来自“南湖船老大”的答案
。。。。
插件的命名和存放路径都是有规律的,这个不言自明。这还需要找吗?不需要
引用来自“南湖船老大”的答案
引用来自“欣儿”的答案
引用来自“南湖船老大”的答案
。。。。
插件的命名和存放路径都是有规律的,这个不言自明。这还需要找吗?不需要
几乎所有的烂玩意, 你都如此熟悉
你用什么时间来做真正有意义的事情呢?
让你看看什么叫做 Template:
引用来自“南湖船老大”的答案
引用来自“宏哥”的答案
引用来自“南湖船老大”的答案
引用来自“欣儿”的答案
引用来自“南湖船老大”的答案
。。。。
插件的命名和存放路径都是有规律的,这个不言自明。这还需要找吗?不需要
几乎所有的烂玩意, 你都如此熟悉
你用什么时间来做真正有意义的事情呢?
让你看看什么叫做 Template:
我厂可是Java和PHP都在用的,PHP的种种又怎么会不知道。至于smarty算不算烂,我个人觉得是除出了原生PHP外的最好选择。就楼上用正则搞得这种练手的东西,就不做评价了。我也写过类似的模板引擎,但最终还是选择了用smarty或者直接PHP代码.单纯的使用正则和语法糖不能解决问题,反而会引入问题。只有像smarty和twig这种基于parse的模板引擎,才能把扩展性和兼容性做到最好。
我也没空测试和细看,就随便问几个问题,这也是我在写PHP的模板引擎过程中先后遇到的问题:
1.任意目录递归include的问题是否实现,也就是所谓的子模板和layout?
2.多层变量/多维数组解析是否实现,比如blog.user.name;
3.在标签里直接调用PHP内置函数和自定义函数是否实现?
4.类似smarty里的module和plugin你又如何解决?没有这个东西的话,模板引擎会比PHP还复杂;
5.报错的处理。如果模板里有语法错误,报错能否精确到模板的精确行,而不是一堆莫名其妙的错误提示?
如果不能很好的解决上面提到的几个问题,那还不如原生PHP。
1: 第 11条
2: 第 2 条
3: 第8 条
5: 第8 条
6: 出错行数和 模板一致,编译后的php是行对应的.
所有被OO F K过的脑残, 都无可救药, 无法理解本来就是很简单的东西.
除非你用两个凡是来拯救
哪怕是一些不大入流的php软件, 都不屑于用smarty 这种 肿胀的跟脓包一样的烂玩意
唯独你们这些 OO F K过的, 不可理喻.
回复 @南湖船老大 :
引用来自“宏哥”的答案
回复 @南湖船老大 :
引用来自“宏哥”的答案
回复 @南湖船老大 :
编译后: