【问题标题】:PHP Deprecated: Methods with the same name不推荐使用 PHP:具有相同名称的方法
【发布时间】:2016-09-03 04:18:30
【问题描述】:

我收到一个错误提示

不推荐使用:与其类同名的方法在 PHP 的未来版本中将不再是构造函数; TSStatus 在第 10 行的 C:\Program Files (x86)\Zend\Apache24\htdocs\viewer\modules\tsstatus\tsstatus.php 中有一个弃用的构造函数

类 TSStatus 是第 10 行加上底部 TSStatus 显示

class TSStatus
{
    private $_host;
    private $_queryPort;
    private $_serverDatas;
    private $_channelDatas;
    private $_userDatas;
    private $_serverGroupFlags;
    private $_channelGroupFlags;
    private $_login;
    private $_password;
    private $_cacheFile;
    private $_cacheTime;
    private $_channelList;
    private $_useCommand;
    private $_javascriptName;
    private $_socket;

    public $imagePath;
    public $showNicknameBox;
    public $timeout;
    public $hideEmptyChannels;
    public $hideParentChannels;

    public function TSStatus($host, $queryPort)

    ...
}

【问题讨论】:

  • 所以在你的代码中使用正确的public function __construct($host, $queryPort)构造函数,就像PHP Documentation告诉你的那样
  • 或公共静态自我::。但马克是对的。构造更好。
  • 不要使用 PHP 4 风格的构造函数。从the documentation 开始,PHP 4 风格的构造函数(与定义它们的类同名的方法)已被弃用,将来将被删除
  • 对文件“pdf_parser.php”使用 FPDF。第 101 行有“函数 pdf_parser($filename)”。将其更改为“function __construct($filename)”,它不再起作用。有什么想法吗?

标签: php


【解决方案1】:

我收到了关于这个问题的警告,现在它开始起作用了。一开始是:

function Smarty()
{
  $this->assign('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME']
                : @$GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']);

但我是这样做的:

function _construct()
    {
      $this->assign('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME']
                    : @$GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']);

现在我不再收到警告,脚本运行良好。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

如错误中所述,the official manual 和 cmets:

替换

public function TSStatus($host, $queryPort)

public function __construct($host, $queryPort)

【讨论】:

  • 因为我想知道:是的,它是一个替代品。除了重命名之外别无他法。
  • 如果我进行该更改,功能会受到干扰吗?
  • @AminahNuraini 否(见第一条评论)
  • 谢谢!事实上,它仍在 PHP 7.4 上工作,它只是打印不推荐使用的消息。我在 PHP5 上尝试了 __construct 并且它一直有效,所以一切都很好而且很有趣。
  • 您没有提到对构造函数的调用需要更改为“parent::__construct();”
猜你喜欢
  • 1970-01-01
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
相关资源
最近更新 更多