周梦康 发表于 2018-09-12 280 次浏览 标签 : PHP框架笔记

免费领取阿里云优惠券 我的直播 - 《PHP 进阶之路》

class A {
    public function init(){
        $reflect = new \ReflectionClass($this);
        $props = $reflect->getProperties(\ReflectionProperty::IS_PUBLIC | \ReflectionProperty::IS_PRIVATE | \ReflectionProperty::IS_PROTECTED);
        foreach ($props as $prop){
            $prop->setAccessible(true);
            $doc = $prop->getDocComment();
            preg_match("/@var (.*)/",$doc,$matches);
            $className = $matches[1];
            if (class_exists($className)){
                $prop->setValue($this, new $className);
            }
        }
    }
}

class B extends A{

    /**
     * @var C
     */
    private $c;

    public function x()
    {
        $this->c->test();
    }
}

class C {
    public function test(){
        echo __METHOD__."\n";
    }
}


$b = new B();
$b->init();
$b->x();

嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表