Twig访问受保护/私有模型变量

时间:2018-02-06 12:23:24

标签: php twig render private protected

我有Twig的问题,(事实上这不是一个问题,但这对我来说很令人不安)

我在 php 中有一个Post模型类,我有一些受保护的变量(我也试过 private )。要访问它们,我在php getMyVariable 中有一个 public 函数。如果在我的控制器中我尝试回显受保护的变量,它会让我误解spark.streaming.backpressure.enabled spark.streaming.backpressure.initialRate 所以我必须使用该函数来回显我的变量。

这是完全正常的,这就是我想要的

但是,然后我尝试在Twig中渲染它,并且我使用相同的系统和函数来渲染我的变量,它工作得很好......但是如果我尝试直接渲染我的受保护变量,它也会起作用这不是一个好的做法,有没有办法停止在树枝中直接渲染受保护/私有变量(我的意思是超越了getter函数)

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

请查看documentation。 Twig没有访问受保护的变量,这是不可能的,但由于它的实现,它将转换你的twig代码,例如foo.bar$foo.getBar()并检查该方法是否存在,因此能够访问"受保护的变量

来自Twig的文档

  

为方便起见,foo.bar在PHP上执行以下操作   层:

- check if foo is an array and bar a valid element;
- if not, and if foo is an object, check that bar is a valid property;
- if not, and if foo is an object, check that bar is a valid method (even if bar is the constructor - use __construct() instead);
- if not, and if foo is an object, check that getBar is a valid method;
- if not, and if foo is an object, check that isBar is a valid method;
- if not, and if foo is an object, check that hasBar is a valid method;
- if not, return a null value.
     另一方面,

foo['bar']仅适用于PHP数组:

check if foo is an array and bar a valid element;
if not, return a null value.

source