Две функции в одном классе не могут получить доступ друг к другу - PullRequest
0 голосов
/ 02 апреля 2019

В настоящее время я изучаю объектно-ориентированный PHP, поскольку я всегда использовал процедурный, и я подумал, что пора. Короче говоря, я всегда получаю следующую ошибку "Uncaught Error: Call to undefined function", когда я пытаюсь вызвать функцию, которая находится в том же классе, она не будет работать. Вот код:

  public function getStats( $imgid ) {

    $imgid  = $this->mysqli->real_escape_string($imgid);
    $result = $this->mysqli->query("SELECT * FROM images WHERE imgid = " . $imgid);

    if( mysqli_num_rows( $result ) != 1 ) {
      print("Image not found!");
      exit();
    }

    $result    = $result->fetch_array();
    $returnVal = array();

    $uploader  = getUploaderName($result[1]);
    $upvotes   = getVotes($imgid, '0');
    $downvotes = getVotes($imgid, '1');

    array_push($returnVal, $result[0], $uploader, $result[2], $upvotes, $downvotes, $result[3], $result[4]);

    return $returnVal;

  }

  private function getUploaderName( $uid ) {

    $result = $this->mysqli->query("SELECT name FROM users WHERE uid = " . $uid);
    $result = $result->fetch_array();

    return $result[0];

  }

  private function getVotes( $imgid, $type ) {
    # If $type == 0 => Get Upvotes; If $type == 1 => Get Downvotes
    $result = $this->mysqli->query("SELECT COUNT(vid) FROM votes_i WHERE imgid = " . $imgid . " AND type = '" . $type . "'");
    $result = $result->fetch_array();

    return $result[0];

  }

А также вот часть, где функция вызывается в индексе:

$image = new Image;

if( isset( $_GET['imgid'] ) ) {
  $imgStats = $image->getStats( $_GET['imgid'] );
}

Я уже пытался изменить функцию с приватной на публичную, но это ничего не меняет.

1 Ответ

1 голос
/ 02 апреля 2019

Вы пытались добавить $ this-> перед вашей функцией?Я предполагаю, что это в классе, и я думаю, что вам нужно сослаться на объект, с которым вы работаете.

$this->functionName();

Этот ответ более подробно: https://stackoverflow.com/a/1523484/9186388

...