【问题标题】:Uncaught Error: Cannot call abstract method (PHP Fatal error)未捕获的错误:无法调用抽象方法(PHP 致命错误)
【发布时间】:2016-07-06 11:23:02
【问题描述】:

我正在扩展一个具有两个抽象方法的抽象类。 当我尝试实例化子类时,出现以下错误,

 PHP Fatal error:  Uncaught Error: Cannot call abstract method GetAnswer::GetAnswer()

当我在父母和孩子中注释掉 GetAnswer() 时,一切正常。

PHP 版本:XAMPP 中的 7.0.2,在 Wondows 8.1 上运行。

父类文件app-getAnswer-base.php如下

<?php
abstract class GetAnswer{
    abstract public function GetAnswer($Username, $QuestionnaireID, $QuestionID);
    abstract public function GetAnswers($Username, $QuestionnaireID);
}

子类文件app-getAnswer-db-direct.php如下

<?php
require_once 'config-db-login.php';
require_once 'app-getAnswer-base.php';

class GetAnswer_SQLSelect extends GetAnswer {

    public function GetAnswer($Username, $QuestionnaireID, $QuestionID){
        return null;
    }    

    public function GetAnswers($Username, $QuestionnaireID){
        $connection = new mysqli(dbLogin::$db_hostname, dbLogin::$db_username, dbLogin::$db_password, dbLogin::$db_database);

        if ($connection->connect_error) die($connection->connect_error);

        $query = "SELECT `QuestionID`, `Answer` FROM `answerstore`.`answers` AS a JOIN  `answerstore`.`participants` AS b ON a.`ParticipantID` = b.`ParticipantID` WHERE a.`QuestionnaireID` = '$QuestionnaireID' AND b.`Username`='$Username'";

        $result = $connection->query($query);
        $connection->close();

        return $result;    
    }
}

【问题讨论】:

  • 显示引发错误的调用代码。
  • @MichaelDibbets,是$getAnswers = new GetAnswer_SQLSelect();

标签: php abstract-class fatal-error


【解决方案1】:

我认为当您尝试实例化 Child 类时,它会从 Parent 类 (GetAnswer) 调用 GetAnswer() 方法,因为它就像构造函数一样工作。

尝试将方法名称更改为其他名称。

【讨论】:

    【解决方案2】:

    您必须实例化具体类“GetAnswer_SQLSelect”,然后调用方法“GetAnswer”。

    $GetAnswer_SQLSelect = new GetAnswer_SQLSelect(); //create new instance.
    $GetAnswer_SQLSelect->GetAnswer($param1, $param2, $param3); //invoke method.
    

    【讨论】:

    • 那么可能的问题是您在回复中提到的问题。
    猜你喜欢
    • 2021-06-05
    • 2021-06-21
    • 1970-01-01
    • 2019-07-19
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多