Ich habe eine Klasse 'Collection', die eine Add-Methode hat. Die add-Methode sollte nur Objekte akzeptieren. Dies ist also das gewünschte Verhalten:
$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
Laut dem PHP-Handbuch kann man Methoden durch Voranstellen der $arg
mit einem Klassennamen. Da alle PHP-Klassen Kinder von stdClass
Ich dachte mir, dass diese Methode funktionieren würde:
public function add(stdClass $obj);
Aber es schlägt fehl mit "Argument muss eine Instanz von stdClass sein".
Wenn ich die Signatur auf eine von mir definierte übergeordnete Klasse ändere, dann funktioniert es:
class Collection {
public function add(Base $obj){
//do stuff
}
}
$collection->add($foo); //$foo is class Foo which is an extension of Base
Weiß jemand, wie man einen Hinweis für ein allgemeines Objekt eingeben kann?