Ben bir add metodu bir sınıf 'Koleksiyon' var. Eklenti yöntem yalnızca nesneleri kabul etmelidir. Yani bu istenen davranıştır:
$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 kılavuzuna göre, bir sınıf adı ile $arg
prefacing tarafından yöntemlerini typehint yapabilirsiniz. Tüm PHP sınıfları stdClass
çocukları olduğundan, bu yöntem işe imza düşündüm:
public function add(stdClass $obj);
Ama "Argüman stdClass bir örneği olmalı" ile başarısız olur.
Bana göre tanımlanan bir üst sınıfa imza değiştirirseniz, o zaman çalışır:
class Collection {
public function add(Base $obj){
//do stuff
}
}
$collection->add($foo); //$foo is class Foo which is an extension of Base
Herkes genel bir nesne için ipucu yazın nasıl biliyor mu?