Comparare.php
<?php
interface Comparare{
public function compara(self $a);
}
?>
clasa.php
<?php
class Clasa implements Comparare{
public $v;
public function compara(self $a){
if($this->v < $a->v)
{
return -1;
}
else if($this->v==$a->v)
{
return 0;
}
else
{
return 1;
}
}
function __construct($a){
$this->v=$a;
}
}
?>
test.php
<?php
function __autoload($class_name){
require_once ($class_name) . ".php";
}
function maxim(Comparare $a,Comparare $b){
if ($a->compara($b)<0){
return $b;
}
else {
return $a;
}
}
$x=new Clasa(7);
$y=new Clasa(8);
$max=maxim($x,$y);
echo "maximul este:" . $max;
?>
致命错误:Clasa :: compara()的声明必须兼容 Comparare :: compara(Comparare $ a)in 第3行的D:\ xammp \ htdocs \ php \ clase \ comparare \ clasa.php
我使用XAMPP 3.2.2(PHP版本5.5.33)
答案 0 :(得分:1)
界面中的self
类型是指接口 - 在您的类中它引用了类。这是两种不同的类型。定义方法时需要使用接口类型名称才能匹配类型。实现接口方法时,签名(包括类型)必须与要拾取的实现相匹配。
public function compara(Comparare $a) {