typehinting: yöntem bir nesne herhangi bir $ arg kabul etmelidir

0 Cevap php

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?

0 Cevap