鍵入提示通用物件
由於 PHP 物件不從任何基類繼承(包括 stdClass
),因此不支援提示通用物件型別的型別。
例如,以下內容不起作用。
<?php
function doSomething(object $obj) {
return $obj;
}
class ClassOne {}
class ClassTwo {}
$classOne= new ClassOne();
$classTwo= new ClassTwo();
doSomething($classOne);
doSomething($classTwo);
並將丟擲一個致命的錯誤:
致命錯誤:未捕獲的 TypeError:傳遞給
doSomething()
的引數 1 必須是物件的例項,給出的是 OperationOne 的例項
解決此問題的方法是宣告一個不定義方法的簡併介面,並讓所有物件都實現此介面。
<?php
interface Object {}
function doSomething(Object $obj) {
return $obj;
}
class ClassOne implements Object {}
class ClassTwo implements Object {}
$classOne = new ClassOne();
$classTwo = new ClassTwo();
doSomething($classOne);
doSomething($classTwo);