首页 > 解决方案 > 当属性不存在时,为什么 Twig 会退回到对象?

问题描述

我正在尝试在模板上打印对象的属性:

{{ MyObject.itsProperty }}

问题是,此属性未设置,__isset将返回false并将__get返回null

Twig 没有打印任何内容并保留它,而是尝试打印 MyObject ,这会导致错误:

可恢复的致命错误:MyObject 类的对象无法在 .....vendor/twig/twig/lib/Twig/Environment.php(378) 中转换为字符串:第 54 行的 eval() 代码

设置strict_variablesfalse没有帮助。如何处理?

标签: phpsymfonytwig

解决方案


正如@GentlemanMax 指出的那样,Twig 将尝试调用方法和属性以尝试解析点运算符。这可能会导致调用 __get 和 __call 魔术方法。

我的问题是我的 __call 实现返回了 $this,导致了我上面提到的错误。

感谢@GentlemanMax 和其他所有人帮助我。


推荐阅读