我找不到问题。此代码可以使用多年,但在重置服务器后,会显示此致命错误。也许你可以帮助我。谢谢
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];
}
}
答案 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