我想檢查傳遞給函數的字符串是否會導致某個類或其子類的實例。下面的例子是訣竅,但我正在尋找一個解決方案,不需要您實例化$className
--因爲我實際上並不需要它。如何檢查字符串是否是特定類的子類的名稱?
public function register($className, $baseAttributes) {
$instance = new $className;
if (!($instance instanceof AbstractFoo)) {
throw new InvalidArgumentException();
}
...
}
我有一個因素$className
情況下,另一種方法,但我想盡早如果配置過程中錯誤的類已經提供的方法失敗。 例如像:
public function register($className, $baseAttributes) {
if (!($className classof AbstractFoo)) {
throw new InvalidArgumentException();
}
...
}
[ReflectionClass](http://www.php.net/manual/en/class.reflectionclass.php) –
檢查它是否實現了某個接口,而不是'is或擴展某個類「? – Sejanus
是$ className的完全限定名嗎? –