键入提示通用对象
由于 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);