4 回答
TA贡献1770条经验 获得超3个赞
Thefoo::class
是一个字符串,它与其他字符串没有什么不同。
该class_exists
功能可以帮助您:
var_dump(class_exists(foo::class));
TA贡献1797条经验 获得超6个赞
以下是您的选择:
class Foo {
}
$foo = new Foo;
is_object($foo); // $foo is an object
is_string($foo); // No, $foo isn't a string
$foo instanceof Foo // $foo is an instance of Foo
is_string(Foo::class) // Foo::class is a string just like any other string
get_class($foo) // returns 'Foo'
class_exists('Foo') // returns true if class Foo can be found
TA贡献1784条经验 获得超2个赞
该foo::class调用返回一个类名字符串。您可以实例化一个对象并为其提供一个变量,如下所示:
$p = foo::class;
$query = new QueryThing();
$obj = new $p($query);
你可以这样做看看你有什么类型的课程
get_class($p) // returns "foo"
$p instanceof foo // returns true
但是您无法知道您的对象是通过foo::class调用动态实例化的。
TA贡献2012条经验 获得超12个赞
你可以为instanceof
if($q instanceof Foo){
echo "Here do the things you need with your class";
} else {
echo "Assume it is a string?";
}
我建议的另一个选择是确保通过类型提示获得期望的数据。
function bar(Foo $foo){
//foo has to be Foo class or exception will be thrown.
}
- 4 回答
- 0 关注
- 164 浏览
添加回答
举报