Twig 正在访问 protected/private 个模型变量

Twig accessing protected/private model variables

我对 Twig 有疑问,(事实上这不是真正的问题,但它让我感到不安)

我在 php 中有一个 Post 模型 class,我有一些 protected变量(我也试过 private)。为了访问它们,我在 php getMyVariable 中有一个 public 函数。如果在我的控制器中我尝试回显受保护的变量,它会给我一个错误 Cannot access protected property... 所以我必须使用该函数来回显我的变量。

这很正常,这就是我想要的

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

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


来自Twig的文档

For convenience's sake foo.bar does the following things on the PHP layer:

- 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'] on the other hand only works with PHP arrays:

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

source