7

私はクラスを持っています:

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

関数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])

32行目は次の行です。

$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));

エラーを調べて、それが何を意味するのかは確かにわかっていますが、この警告の原因となるコードの何が問題になっているのか理解できません。

4

3 に答える 3

20

リセットは変数参照を待機しています。あなたはそれに関数の結果を渡しています...

$taxonomy_term = taxonomy_get_term_by_name($lead_type, $vocabulary);
$taxonomy_term = reset($taxonomy_term );
于 2012-12-04T08:47:32.093 に答える
10

これは、式ではなく、変数のみが参照によって渡される必要があることを意味します。

reset($array_variable); // correct

reset(some_function_that_returns_array()); // incorrect

少し時間を取って考えてみるとreset()、配列ポインタを最初に巻き戻したので、式(変数ではない)では意味がないことがわかりますが、その配列にアクセスすることはできませんもう。

于 2012-12-04T08:46:29.480 に答える
2

関数の戻り値ではなく、変数(参照によって渡される)のみをリセットする必要があります。参照:http ://www.php.net/reset

于 2012-12-04T08:48:11.080 に答える