我有一节课:
class Validator {
private $validationArray;
private $cleanedValues;
public function __construct($arg1, $arg2=NULL) {
if(empty($arg2)) {
$this->LoadValidatorByName($arg1);
} else {
$this->LoadValidatorFromLeadType($arg1, $arg2);
}
}
private function LoadValidatorFromLeadType($lead_type, $vocabulary) {
$ErrorReporter = new ErrorReporter;
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
...some more stuff
Run Code Online (Sandbox Code Playgroud)
函数taxonomy_get_term_by_name是一个Drupal函数,但我遇到的问题是PHP问题.
调用此方法时,PHP会抱怨:
Strict warning: Only variables should be passed by reference in Validator->LoadValidatorFromLeadType() (line 32 of [path to my file])
Run Code Online (Sandbox Code Playgroud)
第32行是:
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
Run Code Online (Sandbox Code Playgroud)
我已经查看了错误,我很确定我知道这意味着什么,但我无法理解导致此警告的代码有什么问题.
Sal*_*ter 18
reset正在等待变量引用.你正在传递一个函数结果......
$taxonomy_term = taxonomy_get_term_by_name($lead_type, $vocabulary);
$taxonomy_term = reset($taxonomy_term );
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 10
这意味着只应通过引用传递变量,而不是表达式.
reset($array_variable); // correct
Run Code Online (Sandbox Code Playgroud)
和
reset(some_function_that_returns_array()); // incorrect
Run Code Online (Sandbox Code Playgroud)
如果你花一点时间再考虑一下 - 你会发现reset()表达式(不是一个变量)是没有意义的,因为你已经将数组指针倒回到开头,但是你没有能力访问那个数组了.