嵌套函数属性可访问性

时间:2017-12-20 19:36:45

标签: php properties scope twig this

我想在下面的示例中访问testProperty,但这是在嵌套函数内(扩展twig,它必须嵌套),但它当然说 “在不在对象上下文中时使用$ this。”

我根本无法打开现有的“公共功能”。有谁知道如何解决这个问题?

我想在整个班级中使用全局变量,而不使用全局变量。

class test
{
    private testProperty;

    public function testFunction() {
        function abc() {
            var_dump($this->testProperty)
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我没有像我想要的那样完全解决问题,但我确实在我的文档中修复了它。我把我的功能放在了外面并公之于众,只是将我的abc()更改为$ this-> abc()真的对我的疏忽

答案 1 :(得分:0)

如果我对您尝试实现的目标的猜测是正确的,您可能需要执行以下操作:

class test
{
    private $testProperty = "whatever";

    public function testFunction() {

        $abc = function() {
            var_dump($this->testProperty);
        };

        $abc();

    }

}

$x = new test;
$x->testFunction();

由于$abc现在是一个匿名函数,因此在类方法中使用时,它具有$this变量。

上面的代码将输出:

string(8) "whatever"