【问题标题】:500 internal error in php while implements an interface实现接口时 php 中的 500 内部错误
【发布时间】:2017-09-10 06:52:22
【问题描述】:

我遇到了此代码的问题。这显示 500 内部错误。文件名为 Dog.php。谁能帮帮我。

interface Animal{

     public function bark(){ 

     }
     public function eat(){ 

     }

}

class Dog implements Animal {


    public function bark(){

        echo "bark bark";
    }
     public function eat(){
        echo "Biscuits";
    }


}
$d =  new Dog();
$d->bark();

【问题讨论】:

  • 接口没有主体,见人:php.net/manual/en/language.oop5.interfaces.php
  • 帮助您更好地调试的提示:出于安全原因,发送到浏览器的错误消息不包含太多信息。 http 状态 500(内部服务器错误)基本上是 nothing。相反,您对代码遇到的实际问题感兴趣。您需要开始监控您的 http 服务器错误日志文件。在那里您可以简单地阅读确切的问题,以及发生崩溃的文件和行号。

标签: php interface


【解决方案1】:

当你提供接口时,Body 是不允许的

interface Animal{

     public function bark(); //remove body
     public function eat(); //remove body

}

class Dog implements Animal {


    public function bark(){

        echo "bark bark";
    }
     public function eat(){
        echo "Biscuits";
    }


}
$d =  new Dog();
$d->bark();

【讨论】:

【解决方案2】:

你的接口函数不应该有一个主体。你必须像这样声明它们:

interface Animal{
    public function bark();
    public function eat();
}

更多信息请查看PHP documentation on interfaces

【讨论】:

    【解决方案3】:

    接口是对对象可以执行的操作的描述。它应该只将这些操作定义为不应包含任何实现代码的函数签名。接口的目的是强制对象实现这些操作。这就是为什么在你的 Animal 界面中你应该只定义 barkeat 函数签名并删除实现部分 (we use {} to start our implementation) 和你的 Dog类应该有dog如何实现 会吠叫吃东西。

    interface Animal {
         public function bark(); 
         public function eat();
    }
    

    【讨论】:

    • 请编辑和格式化您的代码并添加更多细节和解释
    • 不鼓励仅使用代码的答案,因为它们没有解释如何解决问题中的问题。请更新您的答案以解释它的作用以及它如何解决问题。请查看How do I write a good answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2018-02-19
    相关资源
    最近更新 更多