PHP致命错误:......的声明必须与

时间:2016-03-07 16:32:41

标签: php

我找不到问题。此代码可以使用多年,但在重置服务器后,会显示此致命错误。也许你可以帮助我。谢谢

  

PHP致命错误:styBoxLoadEventArgs :: __ construct()的声明   必须与EventArgs :: __ construct()兼容   第4行的/ modules / sty / events / styBoxLoadEventArgs.php

代码是:

<?php

class styBoxLoadEventArgs extends EventArgs
{
    public $hide = false;
    public $box;

    public function __construct($box)
    {
        $this->box = $box;
    }
}
?>

这里是EventArgs的代码

?php

/**
 * EventArgs
 */
abstract class EventArgs
{

    public $sender, $senderClass, $senderObject, $event;
    protected $items;

    /**
     * Creates new EventArgs object
     */
    abstract public function __construct();

    /**
     * Returns specified item
     * 
     * @param   string      item-name
     * @return  mixed
     */
    public function __get($_name)
    {
        if(!array_key_exists($_name, $this->items)) 
        {
            throw new BasicException("Item '" . $_name . "' not found");
        }

        return $this->items[$_name];
    }

    /**
     * Sets specified item
     * 
     * @param   string      item-name 
     * @param   mixed       value
     */
    public function __set($_name, $_value)
    {
        if(!array_key_exists($_name, $this->items))
        {
            throw new BasicException("Item '" . $_name . "' not found");
        }

        $this->items[$_name] = $_value;
    }

    public function &GetByRef($_key)
    {
        if(!array_key_exists($_key, $this->items))
        {
            throw new BasicException("Item '" . $_key . "' not found");
        }

        return $this->items[$_key];
    }

}

2 个答案:

答案 0 :(得分:1)

当子项重新声明父项已定义的函数时,您必须为该函数保留相同的提示/数据类型。因此,让我们说EventArgs在其构造函数中要求特定的数据对象(或者在PHP7中使用严格的类型提示)。您的孩子还必须指定该数据类型。这是一个例子(提出一个)

class EventArgs
{
    public function __construct(Array $box)
    {
        $this->box = $box;
    }
}

在这种情况下,您的子构造函数还必须要求Array。有一些elaborate reasons for this

答案 1 :(得分:0)

@schnittstelle,我认为我们都在研究同样的软件问题。切换到PHP 5.6之后,我的..date软件不再适用。感谢这个页面,我现在更进了一步,但又坚定了。你有没有和你一起跑?不幸的是,我是PHP外行,在这里看我,但需要帮助。也已发布在..date.de论坛上,但未收到任何回复。嗥。 LG Angelika