0

タイトルの通り、PHP/Yii プロジェクトでモデルを作成し、以下のようなメソッドを作成します。

public function getRootId($id, $module) {
    $com = Yii::app()->db->createCommand()->select('pid,id')
            ->from($this->tableName())
            ->where('id=:id', array(':id' => $id))
            ->andWhere('module=:module', array(':module' => $module))
            ->queryRow();
    if ($com['pid'] == 0 || empty($com['pid'])) {
        return $com['pid'];
    } else {
        $this->getRootId($com['pid'], $module);
    }
}

しかし、リターン前に正常にダンプできる戻り値を取得できません。次に、静的トリビュート $_itmes を追加します

private static $_items;

以下のようにコードを更新します。

public function getRootId($id, $module) {
    $com = Yii::app()->db->createCommand()->select('pid,id')
            ->from($this->tableName())
            ->where('id=:id', array(':id' => $id))
            ->andWhere('module=:module', array(':module' => $module))
            ->queryRow();
    if ($com['pid'] == 0 || empty($com['pid'])) {
        self::$_times = $com['id'];
    } else {
        $this->getRootId($com['pid'], $module);
    }
}

次に、self::$_items を使用してターゲット値を取得できます。

友達、何が起こったのか誰が教えてくれますか?

4

1 に答える 1

0

その場合も返品が必要elseです..

return $this->getRootId($com['pid'], $module);

var_dump と static 割り当てが機能している理由は、再帰呼び出しであるためです。 if 呼び出しに行くと、印刷/割り当てが行われますが、戻りの場合は、最終的に値も返す必要があります..

于 2013-07-28T17:50:04.747 に答える