Php 界面中抽象的含义是什么

Php 界面中抽象的含义是什么,php,Php,界面中关键字抽象的含义是什么。 我正在尝试在接口中编写抽象关键字 <?php interface I { abstract function test (); } class A implements I{ public function test ($offset) { } } $x=new A(); ?> 但是这里所有的方法都是抽象的,我已经实现了,这很好 错误的原因是什么,因为它对预定义接口运行良好ArrayAccess接口是

界面中关键字抽象的含义是什么。 我正在尝试在接口中编写抽象关键字

<?php
interface I
{
     abstract  function test ();
}

class A implements I{
    public function test ($offset)
    {

    }    
}
$x=new A();

?>
但是这里所有的方法都是抽象的,我已经实现了,这很好


错误的原因是什么,因为它对预定义接口运行良好ArrayAccess接口是类的定义。它指定了实现接口所需的几个方法

<?php
interface I
{
     abstract  function test ();
}

class A implements I{
    public function test ($offset)
    {

    }    
}
$x=new A();

?>
抽象是您扩展的接口和父类的组合。它有一些方法需要像接口一样实现,但也有一些方法需要定义

为了使代码正常工作,您需要从方法中删除abstract关键字,或者将类定义更改为abstract,而不是接口。在这两种情况下,您还需要更改
test
方法的签名,以匹配实现类中的定义(添加$offset参数)。

来自php.net ()


“PHP5引入了抽象类和方法。定义为抽象的类不能实例化,任何包含至少一个抽象方法的类也必须是抽象的。定义为抽象的方法只声明方法的签名-它们不能定义实现。”接口是一个空类,只包含方法声明。所以 实现此接口的类中必须包含声明的函数。所以 接口只不过是一个严格的规则,它有助于扩展任何类并严格 实现接口中定义的所有方法

当一个方法被声明为抽象时,这意味着子类必须重写该方法 方法。抽象方法不应包含定义它的任何主体。一 抽象方法的声明如下所示: 抽象公共功能测试()

若你们仔细阅读上面的段落,你们就可以理解接口中的所有方法都是抽象的

我认为你很困惑,因为抽象关键字显示在函数之前

ArrayAccess {
    /* Methods */
    abstract public boolean offsetExists ( mixed $offset )
    abstract public mixed offsetGet ( mixed $offset )
    abstract public void offsetSet ( mixed $offset , mixed $value )
    abstract public void offsetUnset ( mixed $offset )
   }

这里的抽象显示函数是抽象函数。

不需要键
抽象
,因为接口中定义的所有方法都必须在一个类中实现。我的问题是,如果您打开此链接,这里是一个接口数组访问,其中所有方法都是抽象的,但我正在尝试编写自己的接口方法抽象ErrorInterface中的所有方法都已经是抽象方法。您不需要隐式地告诉每个方法它是抽象的,因为默认情况下它已经是抽象的了(我只是不知道为什么会有错误,他们可以忽略这一点)。