PHP 7.1: 从命名空间获取文件路径

PHP 7.1: Get file path from namespace

我有一个项目。我需要获取包中文件的内容。我可以用困难的方式做到:

file_get_contents('../../vendor/{vendor}/{package}/src/
    {directory}/{sub-directory}/class.php');

或者,我可以做到 "easy way,",但我很确定这是不可能的。

namespace MyVendor\MyProject;

use TheirVendor\TheirPackage\TheirClass;

class MyObject
{
    public function myFunction()
    {
        return file_get_contents(TheirClass);
    }
}

这(或类似的东西)可能吗?

您可以使用 __NAMESPACE__ 全局,然后用正确的目录分隔符替换反斜杠,然后使用 __FILE__ 全局附加文件名

$ns = str_replace( __NAMESPACE__, DIRECTORY_SEPARATOR, '\' );
$path = $ns.DIRECTORY_SEPARATOR.__FILE__;

然后用它做你想做的事。

您可以使用 ReflectionClass instance and its getFileName() method:

获取声明 class 的文件名
$reflector = new ReflectionClass(\Vendor\Package\Class::class);
echo $reflector->getFileName();