簡體   English   中英

PHPDoc或類型提示類作為方法的參數

[英]PHPDoc or type hint class as parameter to method

如何指示函數/方法接受類作為參數? PHPDoc或類型提示就足夠了,但似乎都不允許它。

這是我正在考慮應該工作的一個例子......

/**
 * @param $class class  A reference to a class that will be used to do something
 */
function doReallyWeirdStuff(class $class){
  $class::callStaticMethod();
}

我已經知道如何將類傳遞給這個函數。 我如何表明你應該這樣做?

類名只是字符串,因此您必須鍵入提示它們為字符串。 然后,您需要在運行時檢查它實際上是一個類,在您的方法中:

/**
 * @param $class string  A reference to a class that will be used to do something
 */
function doReallyWeirdStuff(string $class){
  if (class_exists($class)) {
    $class::callStaticMethod();
  } else {
    throw \InvalidArgumentException;
  }
}

請注意,要嚴格遵守字符串值(如類名所需),您需要啟用嚴格類型提示:

declare(strict_types=1);

否則,您可以這樣稱呼:

doReallyWeirdStuff(M_PI);

這沒有多大意義。

除非傳遞實際的對象實例,否則不能使用PHPDoc類型提示。

但是,您可以濫用PHP Doc類型提示。

string|Class $class
or
Class $class

根據您的運行情況,這將產生非常混合的結果。 你將失去一些運行類型檢查而沒有錯誤否定/肯定的能力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM