严格标准:RPA :: PreLoadField()的声明应与Foundation :: PreLoadField()的声明兼容

时间:2011-09-08 02:12:17

标签: php

当我运行index.php并加载页面时,它会出现以下错误:

  

严格标准:RPA :: PreLoadField()声明应与第39行C:\ xampps \ htdocs \ Res \ RPA.php中的Foundation :: PreLoadField()声明兼容

我已经看过RPA.php的第39行了,这个类叫做:

class RPA extends Foundation

有关此错误的任何想法?

此功能来自基础类:

public function PreLoadField($table, $column, $rowid, $coldata, &$value, $disabled=false)
        {
        $retval = false;

        if ($table === 'photos')
            {
            if ($column === 'blogentry')
                {
            $value = LookUpBlogEntries ($column, $coldata[$column]);
                $retval = true;     
                }
            }

        return $retval;
        }

此功能来自RPA类:

public function PreLoadField($table, $column, $rowid, $coldata, &$value)
        {
        $retval = parent::PreLoadField($table, $column, $rowid, $coldata, &$value);

        return $retval;
        }

RPA扩展基金会..

3 个答案:

答案 0 :(得分:2)

我的猜测(因为你没有发布足够的代码来判断)是你在一个父类中使用不同签名的方法。像:

class A
{
    public function blah($a, $b) { }
}

class B extends class A
{
    public function blah($a) { }
}

PHP会抱怨(应该这样)。调用代码需要提供1个参数还是2个?

答案 1 :(得分:1)

当我在joomla安装中打开E_STRICT时,我遇到了类似的警告。在每一个案例中,我检查了两个函数,发现问题是在一个函数中传递的参数数量与另一个函数不同。作为一般规则,我能够通过添加缺少的参数来修复所有错误(类似于$ param = null)。

我建议您搜索整个代码,以了解如何调用这两个函数。这可能会为您提供有关如何解决问题的线索。

祝你好运!

PS:顺便说一下,根据我的经验,你不一定要修复这些警告。在我的情况下,在我修复警告之前,joomla工作正常。

答案 2 :(得分:0)

在php.ini文件中,您需要更改error_reporting设置以排除 E_STRICT 。 例如: error_reporting( E_ERROR | E_WARNING | E_PARSE );

请注意 E_ALL 也会导致此问题,因为自PHP#5.0.0起包含 E_STRICT