【问题标题】:Parent object type hinting in PHPPHP中的父对象类型提示
【发布时间】:2023-03-22 15:14:01
【问题描述】:

我正在尝试为 PHP 中的特定父对象键入提示:

我目前有一个标准的基础对象类:

class stdObject
{

   private $var;

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

我有一个扩展它的类对象:

class valObject extends stdObject
{
}

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

这可能吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用父类型:

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

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

    【讨论】:

      【解决方案2】:

      这可能吗?

      是的,您所描述的是正是类型提示的用途。这是documentation

      【讨论】:

        【解决方案3】:

        类型提示适用于实现链,因此这是有效的:

        public function fnc(stdObject $obj)
        

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

        【讨论】:

          猜你喜欢
          • 2017-11-21
          • 2013-07-18
          • 2022-01-01
          • 2017-09-09
          • 2018-01-04
          • 2015-02-17
          • 2015-09-22
          • 2017-07-05
          相关资源
          最近更新 更多