我正在使用vBulletin,我必须使用vB_datamanger_User类。 我已经包含了正确的文件,并且该类存在。
我必须使用一个名为set_userfields
的方法,但它不存在(在php意见中)。
奇怪的是,如果我这样做
$newuser = new vB_DataManager_User($vbulletin,ERRTYPE_ARRAY);
$newuser->set('username',"MyUsername");
有效。
如果我这样做
var_dump(method_exists($newuser, 'set_userfields'));
返回bool(true)
。
但如果我$newuser->set_userfields(array('field12' => 1));
它没有工作(没有错误)。
我做错了什么?
编辑:该方法声明为function set_userfields(&$values, $verify = true, $all_fields = 'normal', $skip_unset_required_fields = false)
答案 0 :(得分:2)
如果您的代码如下所示:
<?php
class vB_DataManager_User{
public function __construct($a, $b){
}
function set_userfields(&$values, $verify = true, $all_fields = 'normal', $skip_unset_required_fields = false){
}
}
$newuser = new vB_DataManager_User($vbulletin,ERRTYPE_ARRAY);
$newuser->set_userfields(array('field12' => 1)); // it doesn't work (with no errors).
......你应该得到这个:
致命错误:无法通过引用传递参数1
如果不这样做,则表示您尚未在开发框中启用完整错误报告。它与方法存在无关,无论如何也会触发错误:
致命错误:调用未定义的方法vB_DataManager_User :: not_valid()
答案 1 :(得分:1)
如果您尝试按照第一个示例设置用户名,则应该这样做:
$newuser->set_userfields(array('username' => 'MyUsername'));
不是这个:
$newuser->set_userfields(array('field12' => 1));
正如其他人所说,调用一个不存在的方法会产生致命的错误。所以这个方法正在被调用,但只是没有做你认为它正在做的事情。可能根据您所写的内容设置错误的字段。