【问题标题】:PHP Error: Fatal error: Call to undefined method - PHP 5.2 to PHP 7PHP 错误:致命错误:调用未定义的方法 - PHP 5.2 到 PHP 7
【发布时间】:2018-04-04 01:30:27
【问题描述】:

遇到致命错误,我不知所措。
此代码在 PHP 5.2 上工作,但在 PHP 7 上失败。完全披露:我对 PHP 知之甚少。

注意:“CHtmlUsersListInt”位于我无法打开的加密文件中。加密文件是打开的,因为站点的其他部分依赖它工作正常,这似乎是我迁移到新服务器的最后一个问题。

include("./_include/core/main_start.php"); 
    /* 
        Encrypted file that is opened and used in other parts of the site.
        "CHtmlUsersListInt" lives here.                
    */

class CHtmlUsersListAction extends CHtmlUsersListInt
{

    function CHtmlUsersListAction($name, $html_path)
    {
        $this->CHtmlUsersListInt($name, $html_path); /* LINE THROWING ERROR */
    }
}

$type = get_param("display", "list");
if ($type == "list") $list = new CHtmlUsersListAction("users_list", $g['tmpl']['dir_tmpl_main'] . "_mail_interest.html");
else
{
    redirect("mail.php");
}

抛出错误的行:

$this->CHtmlUsersListInt($name, $html_path);

错误:

致命错误:调用未定义的方法 CHtmlUsersListAction::CHtmlUsersListInt()

【问题讨论】:

标签: php


【解决方案1】:

看来问题行是试图调用父类构造函数。

由于您示例的长度以及加密文件的复杂性,我无法在自己的机器上重现此内容。但是,您可以尝试替换该行

$this->CHtmlUsersListInt($name, $html_path); /* LINE THROWING ERROR */

用这个:

$parent->CHtmlUsersListInt($name, $html_path);

或者这个:

parent::CHtmlUsersListInt($name, $html_path);

甚至这个:

parent::__construct($name, $html_path);

更多例子可以参考这个非常好的问题:

How do I get a PHP class constructor to call its parent's parent's constructor

【讨论】:

  • 乔恩,非常感谢。你是男人中的王子。一个有效的: parent::CHtmlUsersListInt($name, $html_path);
猜你喜欢
  • 2015-05-13
  • 1970-01-01
  • 2013-06-02
  • 2011-07-17
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2017-04-01
相关资源
最近更新 更多