函数返回true但if语句另有说明

时间:2014-12-04 15:33:05

标签: php function class if-statement

我需要有新眼睛的人。我有一个函数正在检查他们是否可以访问该主题,或者我的讨论区中的部分。这就是问题。我不知道我是否输错了。

该功能正在返回 bool(true)和Granted(For Debugging)

我的if声明反映出我没有获得许可。

public function hasPermission($key) {
    $group = $this->_db->query("SELECT * FROM `group` WHERE `id` = ?", array($key));
    if ($group->count()){
        if ($key === 1) {
            return true;
        } else {
            $permissions = json_decode($group->first()->permissions, true);
            switch ($key) {
                case 2:
                    $string = 'member';
                    break;
                case 3:
                    $string = 'admin';
                    break;
            }
            print_r($string);
            if ($permissions[$string] === 1) {
                if ($this->_user->hasPermission($string)){
                    print('Granted');
                    return true;
                }
                return false;
            }
            return false;
        }

    }
    return false;
}

这是我不理解的部分。我知道你可以在内部和if语句中调用一个函数,如果函数为真,它将继续。

if (true) {
   //do this
} else {
   //do this
}

右?

我的函数返回true但我的if语句没有执行正确的代码块。

if (isset($_GET['id'])) {
    $id = $_GET['id'];

    $forum->topics($id);
    $topics = $forum->results();

    $permission = $forum->first();
    if (!empty($topics)) {
        foreach ($topics as $topic) {
            $list .= '<tr>';
            $list .= '<td><a href="topic.php?id=' . $topic->id . '">' . $topic->thread_title .'</a></td>';
            $list .= '<td>Mr_Nasty_Time405</td>';
            $list .= '<td>25</td>';
            $list .= '<td>400</td>';
            $list .= '</tr>';
        }
    } else {
        $list .= '<tr>';
        $list .= '<td>There are no Sections under this category would you like to create one?';
        $list .= '</tr>';
    }
    if($forum->hasPermission($permission->permissions)) {
    $error = "Granted";
    } else {$error = "You don't have permission";}
} else {Redirect::to('404');}?>

0 个答案:

没有答案