我的代码中出现此错误。
严格的标准:SugarFieldTime :: save()的声明应与C:\ wamp \ www中的SugarFieldBase :: save(& $ bean,$ params,$ field,$ properties,$ prefix ='')兼容第95行的\ ArcusCRMDemo \ include \ SugarFields \ Fields \ Time \ SugarFieldTime.php
我还检查了可见性和参数列表以及初始值。
我的源代码:
SugarFieldBase.php
public function save(&$bean, $params, $field, $properties, $prefix = '')
{
if (isset($params[$prefix . $field])) {
if (isset($properties['len']) && isset($properties['type']) && $this->isTrimmable($properties['type'])) {
$bean->$field = trim($this->unformatField($params[$prefix . $field], $properties));
} else {
$bean->$field = $this->unformatField($params[$prefix . $field], $properties);
}
}
}
SugarFieldTime.php
function save(&$bean, $params, $field, $properties, $prefix = '') {
global $timedate;
if ( !isset($params[$prefix.$field]) ) {
$bean->$field = '';
return;
}
$bean->$field = $timedate->to_db_time($params[$prefix.$field], false);
}
答案 0 :(得分:0)
子功能与父功能不兼容。它应该是:
<强> SugarFieldTime.php 强>
public function save(&$bean, $params, $field, $properties, $prefix = '')
请注意&
除了$bean
正如我所评论的那样:
当您调用父类时,在传递应由子类保留的值类型时,您期望原始变量不可变。这是因为您可以将伪装成父类对象的子类传递(因为Liskov substitution principle成立),并且您希望对save
方法的所有调用都不会改变$params
方法的原始内容{1}}如果$params
是值类型(例如int,string,array,float)
答案 1 :(得分:0)
保存功能()中存在语法错误:
你曾经使用过:
$bean->$field = ''
它应该是:
$bean->$field = '';
分号丢失了。