警告:在[..]中调用feed::getLikes()缺少参数2.],定义为[…]在第3117行


Warning: Missing argument 2 for feed::getLikes(), called in [...]on line 1497 and defined in [...] on line 3117

我提到的那几行有错误,但我不知道是什么。这句话有些不合逻辑,但我没看出来。我说过,这条线是一系列的地方。

Line: 1497

'.(($this->getLikes()) ? '<div class="sidebar-list">'.$LNG['likes'].': <a href="'.$this->url.'/index.php?a=profile&u='.$profile['username'].'&r=likes"><strong>'.$this->getLikes().' '.$LNG['messages'].'</strong></a></div>' : '').'

线:3117

    function getLikes($start, $type) {
    global $LNG;
    // Type 0: Return the likes count
    // Type 1: Return the liked posts
    if($type) {
        if($start == 0) {
            $start = '';
        } else {
            $start = 'AND `likes`.`id` < '''.$this->db->real_escape_string($start).'''';
        }
        $query = sprintf("SELECT 
        `likes`.`id` as `like_id`, `likes`.`post` as `like_post`, `likes`.`by` as `like_by`, `likes`.`time` as `time`,
        `messages`.`id` as `id`, `messages`.`message` as `message`, `messages`.`type` as `type`, `messages`.`value` as `value`,
        `users`.`username` as `username`, `users`.`first_name` as `first_name`, `users`.`last_name` as `last_name`, `users`.`image` as `image`
        FROM `likes`,`messages`,`users` WHERE `likes`.`by` = '%s' AND `likes`.`post` = `messages`.`id` AND `messages`.`uid` = `users`.`idu` AND `messages`.`public` = 1 %s ORDER BY `likes`.`time` DESC LIMIT %s", $this->profile_data['idu'], $start, ($this->per_page + 1));
        $getLikes = $this->db->query($query);
        // Declare the rows array
        $rows = array();
        while($row = $getLikes->fetch_assoc()) {
            // Store the result into the array
            $rows[] = $row;
        }
        // Decide whether the load more will be shown or not
        if(array_key_exists($this->per_page, $rows)) {
            $loadmore = 1;
            // Unset the last array element because it's not needed, it's used only to predict if the Load More Messages should be displayed
            array_pop($rows);
        }
        // Start the output
        foreach($rows as $value) {
            $time = $value['time']; $b = '';
            if($this->time == '0') {
                $time = date("c", strtotime($value['time']));
            } elseif($this->time == '2') {
                $time = $this->ago(strtotime($value['time']));
            } elseif($this->time == '3') {
                $date = strtotime($value['time']);
                $time = date('Y-m-d', $date);
                $b = '-standard';
            }
            $output .= '<div class="message-container"><div class="message-content"><div class="message-inner">
            <a href="'.$this->url.'/index.php?a=profile&u='.$this->profile_data['username'].'">'.realName($this->profile_data['username'], $this->profile_data['first_name'], $this->profile_data['last_name']).'</a> '.sprintf($LNG['x_liked_y_post'], '<a href="'.$this->url.'/index.php?a=profile&u='.$value['username'].'"><div class="like_btn like_btn_extended" style="float: none;"><img src="'.$this->url.'/thumb.php?src='.$value['image'].'&w=25&h=25&t=a" /></div>'.realName($value['username'], $value['first_name'], $value['last_name']).'</a>', $this->url.'/index.php?a=post&m='.$value['like_post']).' - <span class="timeago'.$b.'" title="'.$time.'" style="float: none;">'.$time.'</span>
             '.((!empty($value['message'])) ? '<div class="like_text_snippet">'.($this->parseMessage(substr($value['message'], 0, 60))).'...</div>' : '').'</div></div></div>';
        }
        // Display the load more button
        if($loadmore) {
            $output .= '<div class="message-container" id="more_messages">
                            <div class="load_more"><a onclick="loadLikes('.$value['like_id'].', '''.$this->profile_data['idu'].''', '''.$this->profile_data['username'].''')">'.$LNG['view_more_messages'].'</a></div>
                        </div>';
        }
        return $output;
    } else {
        $query = $this->db->query(sprintf("SELECT count(`likes`.`id`) FROM `likes`,`messages` WHERE `likes`.`by` = '%s' AND `likes`.`post` = `messages`.`id` AND `messages`.`public` = '1'", $this->profile_data['idu']));
        // Store the array results
        $result = $query->fetch_array();
        // Return the likes value
        return $result[0];
    }
}

意思很清楚。在函数的定义中有:

getLikes($start, $type)

所以你总是需要传递两个参数给函数

代替

'.(($this->getLikes()) ? '<div class="sidebar-list">'.$LNG['likes'].': <a href="'.$this->url.'/index.php?a=profile&u='.$profile['username'].'&r=likes"><strong>'.$this->getLikes().' '.$LNG['messages'].'</strong></a></div>' : '').'

你应该这样写:

'.(($this->getLikes($something1, $something2)) ? '<div class="sidebar-list">'.$LNG['likes'].': <a href="'.$this->url.'/index.php?a=profile&u='.$profile['username'].'&r=likes"><strong>'.$this->getLikes($something1, $something2).' '.$LNG['messages'].'</strong></a></div>' : '').'