代码之家  ›  专栏  ›  技术社区  ›  Simon Trichereau

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

  •  2
  • Simon Trichereau  · 技术社区  · 6 年前

    我对细枝有一个问题,(事实上这不是一个真正的问题,但它让我感到不安)

    我在 php 我有一些 受保护的 变量(我也尝试了 私有的 ). 为了接近他们,我有一个 平民的 php中的函数 getMyVariable . 如果在我的控制器中,我尝试回显受保护的变量,它会提示我一个错误 Cannot access protected property... 所以我必须使用函数来回显我的变量。

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

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

    1 回复  |  直到 3 年前
        1
  •  3
  •   DarkBee    6 年前

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


    从…起 Twig 的文档

    为了方便起见 富。酒吧 在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