如果您嘗試在PHP的類的方法內使用class_exists(),則必須指定類的全名 - 不尊重當前名稱空間。例如,如果我的類是:是否有PHP的class_exists()的名稱空間感知替代?
<?
namespace Foo;
class Bar{
public function doesBooClassExist(){
return class_exists('Boo');
}
}
而且噓是一個類(適當的自動加載),看起來像這樣
namespace Foo;
class Boo{
// stuff in here
}
,如果我嘗試:
$bar = new Bar();
$success = $bar->doesBooClassExist();
var_dump($success);
你會得到一個錯誤...是否有另一種方法來做到這一點,而不必明確指定完整的類名稱(即class_exits('Foo\Boo')
)?
你有沒有試過在你的'doesBooClassExist()'方法中用'__NAMESPACE__'預先給出類名?或者我誤解你想要做的事情? (請參閱http://www.php.net/manual/en/language.namespaces.nsconstants.php) – Crontab
@Crontab這可以在您指出是否沒有其他已知名稱空間感知的方式時完成 - 只是個人偏好。你應該讓這個答案。 – Ray
我不確定,但我認爲它的正確性是class_exists不在名稱空間中搜索。如果直接在名稱空間中檢查,您將如何檢查內部任何名稱空間外的類? – Svetoslav