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);
    }
}

但是在return之前获取不到可以成功dump的返回值。然后,我添加了一个静态贡品$_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 和静态赋值起作用的原因是因为它是递归调用,当它转到 if 调用时,它会打印/赋值,但在返回的情况下,您最终也需要返回值。

于 2013-07-28T17:50:04.747 回答