php - 如何记录一个实现多个接口(interface)的类?

标签 php return-type

假设你有一个类(class)

class View implements ViewInterface, TemplateInterface {

     private $template;

     public function setTemplate($template) {
         $this->template = $template;
         return $this;
     }
}

当您记录 TemplateInterface 并到达 setTemplate($template) 方法时,您将什么作为其返回类型?

如果我将 View 作为返回类型,然后我有不同的类实现 TemplateInterface,但这些类不是我的 API 的 View 类型文档可能是错误的。

您是否设置了 ViewViewInterfaceTemplateInterface 或它们的混合返回类型?

namespace Views\Interfaces;

interface TemplateInterface {

    /* --------------------------------- */
       public function getTemplate();
    /* ---------------------------------
     * @args: void
     *
     * @return: String - The name of the template.
    */

    /* ------------------------------------------ */
       public function setTemplate($template);
    /* ------------------------------------------
     * @arg 1: (String $template) - The name of the template file.
     *
     * @return: Not sure yet!!!
    */

}

最佳答案

界面应如下所示:

interface TemplateInterface
{
    /**
     * @return TemplateInterface
     */
    public function setTemplate($template);
}

和 View 类:

class View implements ViewInterface, TemplateInterface {

     private $template;

     /**
      * @return TemplateInterface
      * or (maybe better)
      * @return View (as it implements TemplateInterface and is more specialized)
      */
     public function setTemplate($template) {
         $this->template = $template;
         return $this;
     }
}

关于php - 如何记录一个实现多个接口(interface)的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19077698/

相关文章:

javascript - 避免下拉列表中的重复记录 Javascript PHP

javascript - 响应式 Adwords 广告

php - 如何使用pdo mysql在插入记录期间检查字段数据类型是否一致

应忽略指示其返回值的 c++ 函数

c++ - 强制 SFINAE 使用不同的返回类型

php - 如果使用 MySQL 事务,我必须考虑哪些差异?

php - 我正在尝试在 php 中运行邮件表单。这是带有 Bootstrap 3.0 的 HTML

c++ - 如果它包含多个语句,是否有理由不允许 lambdas 推断返回类型?

java返回类型错误及错误处理

c - 从c中的末尾获取链表中的节点值