PHP中的父对象类型提示


Parent object type hinting in PHP

我想在PHP中输入一个特定父对象的提示:

我现在有一个标准的基对象类:

class stdObject
{
   private $var;
   public function setVar($var)
   {
     $this->var = $var;
     return $this;
   }
}

我有一个类对象扩展了这个:

class valObject extends stdObject
{
}

在PHP函数中,我希望能够键入hint,以便函数可以期望具有stdObject父对象的任何对象,因此发送valObject将工作,但不能发送anyOldObject

这可能吗?

可以使用父类型:

function test(stdObject $obj) {
  // ...
}

如果你不想要一个纯stdObject作为参数,而只想要一个继承stdObject的对象,你应该把你的stdObject类抽象或创建一个接口。

这可能吗?

是的,你所描述的正是类型提示的作用。这里是文档

类型提示与实现链一起工作,所以这是有效的:

public function fnc(stdObject $obj)

这将接受从stdObject扩展的任何对象,包括valObject。它也适用于接口