我一直在尝试在interface
内指定函数的返回类型,PHP
是否对此不提供支持,或者我缺少什么?
<?php interface AInterface { public function F() : self; }
当我实现上面的interface
时,以下内容导致与声明不匹配有关的致命错误:
<?php class A { public function F() : self { return $this; } }
编辑:我知道删除: self
内的interface
可以解决此错误,但这是否意味着无法使用接口确保返回类型?
答案 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
希望对您有所帮助。