特性返回类型

时间:2018-08-12 16:11:22

标签: php traits

我一直在尝试在interface内指定函数的返回类型,PHP是否对此不提供支持,或者我缺少什么?

<?php interface AInterface { public function F() : self; }

当我实现上面的interface时,以下内容导致与声明不匹配有关的致命错误:

<?php class A { public function F() : self { return $this; } }

编辑:我知道删除: self内的interface可以解决此错误,但这是否意味着无法使用接口确保返回类型?

1 个答案:

答案 0 :(得分:1)

您没有实现该接口,并且对使用<?php /** * Created by PhpStorm. * User: kourouma * Date: 12/08/2018 * Time: 17:35 */ interface AInterface { public function F() : AInterface;} class A implements AInterface { public function F() : AInterface { return $this; }} $a = new A(); var_dump($a->F()); // empty object 感到有些困惑;

  

self不引用实例,它引用当前类。

这是我想达到的目标:

  <form>
  *// user select a date*
  <label for="selectDate">Select a date to begin add record:</label></br>
  <input id="selectDate" type="date" name="selectDate" />

  *// let user select how many times per day*
  <select id="timesPerDay">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
    <option>5</option>
    <option>6</option>
  </select>
  <label for="timesPerDay">times per day</label></br>

返回类型声明RFC表示:

  

在继承期间强制执行声明的返回类型为   不变这意味着当子类型覆盖父方法时   则子级的返回类型必须与父级完全匹配,并且   不可省略。如果父母未声明返回类型,则   允许孩子声明一个。

     

...

Read more here 希望对您有所帮助。