我有很多sdk具有相同的类名,所以我将它们移动到文件夹中并创建了名称空间。这些sdk通常用于访问api。
//directory e.g. vendor/company/sdk/files
vendors/ebat/feeback/environment.php
然后我有完全独立的库,我自己创建了包含我需要与这些sdk交互的任何方法。名称空间。
//directory e.g.
library/marketplace/ebay/feedback.php
不确定正确的术语是什么,但在这些库中有一些全局对象,例如stdClass
和ReflectionClass
,它们似乎无法访问/find。
feedback.php
namespace Marketplace'Ebay;
class Feedback extends 'Ebat'Feedback'EbatNsFeedback_Environment {
//simple example
public function new_ReflectionClass($obj){
return new ReflectionClass($obj);
}
}
现在如果我试着调用这个方法
$this->marketplace->ebay->feedback->new_ReflectionClass(new stdClass()));
显示此错误。
Fatal error: Class 'Marketplace'Ebay'ReflectionClass' not found
当我添加反斜杠
时 return new 'ReflectionClass($obj);
然后给出这个错误
Fatal error: Class 'Ebat'Feedback'ReflectionObject' not fount
我如何访问本地/全局ReflectionClass
类,所有类似的问题似乎都通过添加反斜杠来修复。
添加前导'
是访问顶级命名空间/类的正确方法。
但似乎你在其他地方遇到了类似的错误-请注意,你的第二个致命错误是关于反射对象,而不是反射类。您是否有其他代码试图访问ReflectionObject
?
另外,如果您不想在每个引用前加上'
namespace Marketplace'Ebay;
use 'ReflectionClass;
class Feedback extends 'Ebat'Feedback'EbatNsFeedback_Environment {
//simple example
public function new_ReflectionClass($obj){
return new ReflectionClass($obj);
}
}