Php 在Smarty函数和块之间传递持久变量/类

Php 在Smarty函数和块之间传递持久变量/类,php,smarty,Php,Smarty,我正在smarty中定义自定义块和函数。 假设我在模板中的代码如下所示: {myblock} {myfunction} {/myblock} 也可以说,{myblock}调用了一个PHP函数(一个静态的MyClass::create()),该函数创建了MyClass的实例 如何从{myfunction}调用的PHP代码访问该实例 我尝试将实例分配给模板变量,但在myfunction中引用模板时,该变量丢失。如果我使用MyClass的静态属性,也是一样的。 有什么建议吗 (希望一切都清楚

我正在smarty中定义自定义块和函数。 假设我在模板中的代码如下所示:

{myblock}
    {myfunction}
{/myblock}
也可以说,
{myblock}
调用了一个PHP函数(一个静态的
MyClass::create()
),该函数创建了
MyClass
的实例

如何从
{myfunction}
调用的PHP代码访问该实例

我尝试将实例分配给模板变量,但在
myfunction
中引用模板时,该变量丢失。如果我使用MyClass的静态属性,也是一样的。 有什么建议吗

(希望一切都清楚了……)


编辑:由
myblock
myfunction
调用的两个方法都是静态的,我使用了一个
private static$instances
变量来尝试保存id引用的实例,其中myblock放置实例,但现在没有机会从myfunctions访问相同的静态变量,它变为空。

您可能正在尝试修复smarty模板中的问题,您应该在php代码中修复这些问题。使用smarty的优点是将逻辑(php)与表示(html/smarty)分开。你需要在模板中解决这个问题有什么原因吗?@JimmyShelter:我一直在最大限度地分离Smarty和代码。然而,在本例中,我尝试使用Smarty构建一个自动化程度很高的数据网格,几乎只用于它的解析功能。我的目标是拥有一个可以定义datagrid的工具,而无需编写任何PHP代码。我以前做过这件事,使用纯PHP代码,目标是有一个“网格定义文件”来轻松定义所有特性。所以,我想,倒过来,让Smarty来完成这个任务怎么样?