简体   繁体   English

如何从PHP 7中的匿名访问主类的实例?

[英]How to access the instance of the main class from an anonymous in PHP 7?

I'm trying to access the instance of the class where it contains an anonymous as we do in Java, eg: 我正在尝试访问包含匿名的类的实例,就像我们在Java中一样,例如:

JAVA JAVA

class MyClass 
{
    private String prop = "test";

    public void test()
    {
        new Runnable() {

            public void run() 
            {
                // I can access MyClass.this from here
                System.out.println(MyClass.this.prop);
            }

        }.run();
    }
}

PHP 7 PHP 7

<?php

class MyClass
{
    private $prop = "test";

    public function test()
    {
        $class = new class{

            public function run() 
            {
                // ???? MyClass::$prop ????
            }

        };
    }
}

How can I access the MyClass instance from within the anonymous? 如何从匿名中访问MyClass实例?

Use this: 用这个:

class MyClass
{
    public $prop = "test";

    public function test()
    {
        $class = new class($this){
            private $parentObj;
            public function __construct($parentObj)
            {
                $this->parentObj = $parentObj;
            }
            public function run() 
            {
                echo $this->parentObj->prop;
            }
        };
        $class->run();
    }
}

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

The key is to inject $this as a constructor parameter of the anonymous class. 关键是将$this作为匿名类的构造函数参数注入。

Note: I've changed your private $prop to public so i wouldn't have to write a getter for it ;) 注意:我已将您的private $prop更改为public因此我不必为其编写getter;)

See if here: https://3v4l.org/IRhXd 看看这里: https//3v4l.org/IRhXd

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM