doudou521125 2018-02-27 21:53
浏览 294
已采纳

在PHP 7匿名类中访问外部变量

PHP 7 added support for anonymous classes, however I can't seem to find any information regarding associated scoping issues. I know I can use the use keyword with callables/closures to access outer scoped variables (like function() use ($outer) { // do work with $outer }), is there any way to do that with an anonymous class?

I would like to be able to do so without relying on the anonymous class constructor arguments, and without doing things like adding a setter method or public property to store the value after the instantiation.

Here's an example:

$outer = 'something';

$instance = new class {
    public function testing() {
        var_dump($outer); // would like this to dump the string 'something'
    }
};
  • 写回答

3条回答 默认 最新

  • dongzao9044 2018-12-10 13:31
    关注

    another solution could be

    $outer = 'something';
    
    $instance = new class($outer) {
    
        private $outer;
    
        public function __construct($outer) {
            $this->outer = $outer
        }
    
        public function testing() {
            var_dump($this->outer); 
        }
    };
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?