Php 不推荐使用:不应静态调用非静态方法YRCOMS::convertEncodingUTF(),

Php 不推荐使用:不应静态调用非静态方法YRCOMS::convertEncodingUTF(),,php,Php,由于升级到PHP5.6,我遇到了很多这样的错误 严格的标准:只有变量才能通过引用传递 第686行(地址)已弃用:非静态方法 YRComms::convertEncodingUTF()不应静态调用, 假设$this来自第690行(address)中不兼容的上下文 (地址)表示PHP文件,因为我不想在这里发布整个链接 以下是一些代码: 第686行 if(null==$name||''==trim($name))$name=array_pop(explode('/',$url)); 第690行 $n

由于升级到PHP5.6,我遇到了很多这样的错误

严格的标准:只有变量才能通过引用传递 第686行(地址)已弃用:非静态方法 YRComms::convertEncodingUTF()不应静态调用, 假设$this来自第690行(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文件:
所有的错误都可以在这里找到:

正如@Halfstop所说的,您可以静态地调用非静态方法

我不知道YRCOMS是如何建造的。如果它是带构造函数的普通类,那么您需要执行以下操作

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

如果是单身,那么你需要做一些类似的事情

YRComms::getInstance()->convertEncodingUTF($url);
如果不知道YRCOMS类的定义,我无法为您提供更多帮助。

第686行

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

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

if(null==$name||''==trim($name)) {
    $name = explode('/',$url);
    $name = end($name);
}
$obj = new YRComms();
$name=$obj->convertEncodingUTF($name);
$name=$obj->convertEncodingEntities($name);
// Clean URL
$url=$obj->convertEncodingUTF($url);
第693行

更改这些行

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

if(null==$name||''==trim($name)) {
    $name = explode('/',$url);
    $name = end($name);
}
$obj = new YRComms();
$name=$obj->convertEncodingUTF($name);
$name=$obj->convertEncodingEntities($name);
// Clean URL
$url=$obj->convertEncodingUTF($url);

您正在静态调用非静态方法。感谢您的评论,@Halfstop。是的,我明白。我也明白,这肯定是一个令人讨厌的帖子,但我不明白。这样做有危险吗?我应该改变什么,还是干脆不做?如果这篇文章看起来很烦人,我会删除它。这是因为你的代码被破坏了,应该被修复。PHP5.6对这类事情更加严格。我不知道你的PHP代码是什么样子,但是使用$this->而不是YRComms::可能是你应该做的。谢谢你的耐心。如果你有时间想看的话,我会发布一个PHP的链接。旁注:你知道“不推荐”意味着你不应该再使用它了,对吗?应该有一个新的函数或方法可以更好地满足您的需求。谢谢。如果你有时间想看的话,我会发布这个php文件。我已经检查过了,因为我建议你可以使用我的第一个例子,它会工作的。这个类使用非常旧的PHP4语法,所以小心使用它。我现在已经尝试了你的方法,但我不知道该把它放在哪里,我是否应该删除一些旧代码?谢谢您的耐心。好的,请找到第
行的public function convertEncodingUTF(){
并将其更改为
public static function convertEncodingUTF(){
仍然没有任何内容……:(还有其他建议吗?(抱歉回答这么晚…)