У меня есть класс '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
имя класса. Поскольку все классы 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
Кто-нибудь знает, как напечатать подсказку для универсального объекта?