第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP:我如何知道變量是否是“::class”?

PHP:我如何知道變量是否是“::class”?

PHP
犯罪嫌疑人X 2022-10-09 17:22:55
我有 PHP 代碼,它傳遞一個參數(shù)User::class,然后用new $p.但我還需要能夠向它傳遞一個查詢實例......一個具體的實例,當(dāng)然,它也是一個對象......它是一個類的成員。因此,如何檢測變量的值是否是使用::class命名法創(chuàng)建的?一點點單線建議一個答案:$ php -r 'class foo {}; print gettype(foo::class);'string這個假設(shè)正確嗎?對象實例(例如查詢)是類型object,而::class構(gòu)造是string?我只是回答了我自己的問題嗎?為了澄清,我的代碼想要這樣做: if (gettype($q) == 'string') {   $query = new $q();      // must be '::class' (TRUE in my situation tho' not generally) } else {                  // (so, the only other possibility in my case is 'object')   $query = $q;            // existing object instance }...在我的特殊情況下,我知道參數(shù)將始終是一個或另一個。我不需要一個通用的解決方案。
查看完整描述

4 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗 獲得超3個贊

Thefoo::class是一個字符串,它與其他字符串沒有什么不同。

class_exists功能可以幫助您:

    var_dump(class_exists(foo::class));


查看完整回答
反對 回復(fù) 2022-10-09
?
互換的青春

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


查看完整回答
反對 回復(fù) 2022-10-09
?
一只斗牛犬

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)實例化的。


查看完整回答
反對 回復(fù) 2022-10-09
?
繁花如伊

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.

}


查看完整回答
反對 回復(fù) 2022-10-09
  • 4 回答
  • 0 關(guān)注
  • 227 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號