使用命名空间加载文件应该很容易,但是我似乎无法生成该URL。该文件与MyClass
位于同一目录,在此目录中被称为。
<?php namespace Mynamespace\Subnamespace;
class MyClass {
public function getFile() {
$fileLocation = 'myfile.json'; // file is located next to this class in Mynamespace\Subnamespace\file.json
return file_get_contents( $fileLocation );
}
}
我找到的最接近的解决方案是在getFileName()
的{{1}}中使用方法ReflectionClass
。但这会返回完整的URL,包括类MyClass.php文件。并且使用regExp似乎过于矫kill过正,因为可能有一个更简单的解决方案。
如果可以以某种方式将名称空间转换为有效的url,那应该可以解决问题。
应该如何获取file.json?
答案 0 :(得分:2)
您不能将名称空间用于JSON文件。但是,由于它与该类位于同一目录中,因此您应该可以使用__DIR__
<?php namespace Mynamespace\Subnamespace;
class MyClass {
public function getFile() {
$fileLocation = 'myfile.json';
return file_get_contents( __DIR__ . PATH_SEPARATOR . $fileLocation );
}
}
答案 1 :(得分:0)
最简单的方法是使用get_class
<?php namespace Mynamespace\Subnamespace;
class MyClass {
public function getFile() {
// Will have backslashes so str_replace if this is a Unix environment
$path = str_replace('\\', '/', get_class($this));
$fileLocation = $path . '/myfile.json'; // Mynamespace/Subnamespace/myfile.json
return file_get_contents( $fileLocation );
}
}
答案 2 :(得分:0)
如果我理解正确,就这样:
$fileLocation = __NAMESPACE__ . '\myfile.json';
请参见PHP: namespace keyword and __NAMESPACE__ constant。
但是由于您声明“ 文件位于Mynamespace \ Subnamespace \ file.json 中此类的旁边”,因此您可以使用当前文件的完整路径:
$fileLocation = __DIR__ . '\myfile.json'; // or dirname(__FILE__)