4 回答
TA貢獻(xiàn)1770條經(jīng)驗 獲得超3個贊
Thefoo::class是一個字符串,它與其他字符串沒有什么不同。
該class_exists功能可以幫助您:
var_dump(class_exists(foo::class));
TA貢獻(xiàn)1797條經(jīng)驗 獲得超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貢獻(xiàn)1784條經(jīng)驗 獲得超2個贊
該foo::class調(diào)用返回一個類名字符串。您可以實例化一個對象并為其提供一個變量,如下所示:
$p = foo::class;
$query = new QueryThing();
$obj = new $p($query);
你可以這樣做看看你有什么類型的課程
get_class($p) // returns "foo"
$p instanceof foo // returns true
但是您無法知道您的對象是通過foo::class調(diào)用動態(tài)實例化的。
TA貢獻(xiàn)2012條經(jīng)驗 獲得超12個贊
你可以為instanceof
if($q instanceof Foo){
echo "Here do the things you need with your class";
} else {
echo "Assume it is a string?";
}
我建議的另一個選擇是確保通過類型提示獲得期望的數(shù)據(jù)。
function bar(Foo $foo){
//foo has to be Foo class or exception will be thrown.
}
- 4 回答
- 0 關(guān)注
- 227 瀏覽
添加回答
舉報
