我有一个“Collection”类,它有一个 add 方法。 add 方法应该只接受对象。所以这是期望的行为:
$x=5;//arbitrary non-object
$obj=new Foo; //arbitrary object
$collection=new Collection;
$collection->add($obj); //should be acceptable arg, no matter the actual class
$collection->add($x); //should throw an error because $x is not an object
根据 PHP 手册,可以通过在前面加上$arg
带有类名。由于所有 PHP 类都是以下类的子类stdClass
,我认为这个方法签名会起作用:
public function add(stdClass $obj);
但它失败并显示“参数必须是 stdClass 的实例”。
如果我将签名更改为我定义的父类,则它可以工作:
class Collection {
public function add(Base $obj){
//do stuff
}
}
$collection->add($foo); //$foo is class Foo which is an extension of Base
有谁知道如何为通用对象输入提示?
与Java不同Object
类,PHP没有对象的基类。对象不继承stdClass
:它是默认对象实现,而不是基类。因此,不幸的是,您无法为 PHP 中的所有对象键入提示。你必须做类似的事情:
class MyClass {
public function myFunc($object) {
if (!is_object($object))
throw new InvalidArgumentException(__CLASS__.'::'.__METHOD__.' expects parameter 1 to be object");
}
}
幸运的是,PHP 已经定义了InvalidArgumentException
为此目的的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)