嵌套函数属性可访问性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套函数属性可访问性相关的知识,希望对你有一定的参考价值。

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

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

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

class test
{
    private testProperty;

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

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

另一答案

如果我猜测你想要达到的目的是正确的,你可能想做这样的事情:

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"

以上是关于嵌套函数属性可访问性的主要内容,如果未能解决你的问题,请参考以下文章

可访问性不一致:属性类型错误

如何在保持内部类私有的同时创建嵌套模型?

对象属性的可枚举性

如何从片段到活动而不会干扰片段的可重用性

Java:Effective java学习笔记之 使类和成员的可访问性最小化

访问嵌套片段的文本字段