【问题标题】:Deprecated: Non-static method YRComms::convertEncodingUTF() should not be called statically,已弃用:不应静态调用非静态方法 YRComms::convertEncodingUTF(),
【发布时间】:2015-02-24 18:25:46
【问题描述】:

由于升级到 PHP 5.6,我收到大量此错误。

严格标准:只有变量才能通过引用传递 (地址)第 686 行已弃用:非静态方法 YRComms::convertEncodingUTF() 不应该被静态调用, 假设 $this 来自第 690 行 (ADRESS) 中的不兼容上下文

(ADDRESS) 表示 PHP 文件,因为我不想在这里发布整个链接

以下是部分代码:

第 686 行

if(null==$name||''==trim($name))$name=array_pop(explode('/',$url));

第 690 行

$name=YRComms::convertEncodingUTF($name);

第 691 行

$name=YRComms::convertEncodingEntities($name);

第 693 行

$url=YRComms::convertEncodingUTF($url);

等等……

你猜到我应该怎么做?

php 文件可以在这里找到:http://www.filedropper.com/yr 所有错误都可以在这里找到:http://www.filedropper.com/errorfromyr

【问题讨论】:

  • 您正在静态调用非静态方法。
  • 感谢您的评论,@Halfstop。是的,我明白这一点。也明白这一定是一个烦人的帖子,但我不明白。这样做很危险,我应该改变什么,还是应该离开它?如果这篇文章看起来很烦人,我会删除它。
  • 是你的代码坏了,应该修复。 PHP 5.6 对此类事情更加严格。我不知道你的 PHP 代码是什么样的,但是使用 $this-> 而不是 YRComms:: 是你应该做的。
  • 感谢您的耐心等待。如果您有时间并想查看它,我将发布 PHP 的链接。
  • 旁注:您知道“已弃用”意味着您不应该再使用它了,对吧?应该有一个新的函数或方法可以更好地完成你想要的。

标签: php


【解决方案1】:

第 686 行

改变这一行

if(null==$name||''==trim($name))$name=array_pop(explode('/',$url));

到这里

if(null==$name||''==trim($name)) {
    $name = explode('/',$url);
    $name = end($name);
}

第 690,691,693 行

更改这些行

$name=YRComms::convertEncodingUTF($name);
$name=YRComms::convertEncodingEntities($name);
// Clean URL
$url=YRComms::convertEncodingUTF($url);

到这里

$obj = new YRComms();
$name=$obj->convertEncodingUTF($name);
$name=$obj->convertEncodingEntities($name);
// Clean URL
$url=$obj->convertEncodingUTF($url);

【讨论】:

    【解决方案2】:

    正如@Halfstop 所说,您静态调用非静态方法。

    我不知道 YrComms 是如何构建的。如果它是带有构造函数的普通类,那么您需要执行类似

    的操作

    $obj = new YRComms(); $obj->convertEncodingUTF($url);

    如果它是单例,那么你需要做类似的事情

    YRComms::getInstance()->convertEncodingUTF($url);
    

    如果不知道 YRComms 类的定义,我无法为您提供更多帮助。

    【讨论】:

    • 谢谢。如果你有时间想看一下,我会发布 php 文件。
    • 我已经检查过了,因为我建议你可以使用我的第一个示例,它会起作用。这个类使用非常古老的 PHP4 语法,所以要小心使用它。
    • 我已经试过你的方法了,但不知道该放哪里,是否应该删除一些旧代码?感谢您的耐心等待。
    • ok do soemthing else find line public function convertEncodingUTF(){ 并将其更改为 public static function convertEncodingUTF(){
    • 还是什么都没有... :( 还有其他建议吗?(抱歉这么晚才回复...)
    猜你喜欢
    • 2014-09-08
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多