gpt4 book ai didi

php - 是否有一个 namespace 感知替代 PHP 的 class_exists() ?

转载 作者:行者123 更新时间:2023-12-03 00:53:54 25 4
gpt4 key购买 nike

如果您尝试在 PHP 中的类方法内使用 class_exists(),则必须指定该类的全名——不考虑当前命名空间。例如,如果我的类(class)是:

 <?
namespace Foo;

class Bar{
public function doesBooClassExist(){
return class_exists('Boo');
}
}

Boo 是一个类(可以正确自动加载),看起来像这样

   namespace Foo;

class Boo{
// stuff in here
}

如果我尝试:

$bar = new Bar();
$success = $bar->doesBooClassExist();
var_dump($success);

你会得到一个错误...是否有其他方法可以做到这一点,而无需显式指定完整的类名(即 class_exits('Foo\Boo') )?

最佳答案

在 5.5 之前,最好的方法是始终使用完全限定的类名:

public function doesBooClassExist() {
return class_exists('Foo\Boo');
}

这并不难,而且它使你所指的内容非常清楚。请记住,您应该追求可读性。命名空间导入对于编写来说很方便,但会使阅读变得困惑(因为在阅读代码时需要记住当前的命名空间和任何导入)。

但是,在 5.5 中,出现了一个新的构造:

public function doesBooClassExist() {
return class_exists(Boo::class);
}

class 伪魔术常量可以放在任何标识符上,它将返回它将解析为的完全限定类名......

关于php - 是否有一个 namespace 感知替代 PHP 的 class_exists() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15839292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com