私はaddメソッドを持つクラス 'Collection'を持っています。 addメソッドはオブジェクトのみを受け入れるべきです。だから、これは望ましい動作です:PHPマニュアルによると
$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
、一つはクラス名と$arg
を巻頭でメソッドをtypehintすることができます。
public function add(stdClass $obj);
しかし、それは「引数があるstdClassのインスタンスでなければなりません」で失敗します。すべてのPHPクラスは
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