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


Deprecated: Non-static method YRComms::convertEncodingUTF() should not be called statically,

由于升级到PHP 5.6,我收到了很多这样的错误。

严格标准:中只有变量应通过引用传递(ADRESS)第686行不推荐:非静态方法YRComm::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

第686行

更改此行

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

到这个

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

线路690691693

更改这些线路

$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);

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

我不知道YrCommons是如何构建的。如果它是带构造函数的普通类,那么你需要做一些类似的事情

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

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

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

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