我有一个类'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
typehint方法。由于所有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
有谁知道如何为一个通用的对象类型暗示?
'assert(is_object($ arg));'是你所需要的。 – mario 2010-11-18 21:58:47