__DIR__ VS使用Reflection

xda*_*azz 3 php symfony

在Symfony2中,我看到了如下代码:

    if (null === $this->rootDir) {
        $r = new \ReflectionObject($this);
        $this->rootDir = dirname($r->getFileName());
    }
Run Code Online (Sandbox Code Playgroud)

为什么不只是使用__DIR__

    if (null === $this->rootDir) {
        $this->rootDir = __DIR__;
    }
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

San*_*hal 5

__DIR__返回调用它的文件的目录.Symphony2代码返回定义类的目录,该目录很可能是不同的文件.