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();
我有一个项目。我需要获取包中文件的内容。我可以用困难的方式做到:
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:
$reflector = new ReflectionClass(\Vendor\Package\Class::class);
echo $reflector->getFileName();