Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Aufruf einer Member-Funktion auf einem Nicht-Objekt - PHP

$movie->getByPerma($perma,$language); 

gibt etwas zurück, das kein Objekt ist.

Also würde ich

print_r($movie)

auf Zeile 2 und sehen, was ich bekomme.

Die zweite seltsame Sache ist in:

$movie['rating'] = $movie->getRating($movie['id']);

Auf der linken Seite verwenden Sie $movie als Array und auf der rechten Seite verwenden Sie es als Objekt und dann senden Sie wieder den Parameter, den Sie $movie['id'] als Array verwenden.

Also:

Wenn Sie ein Array erhalten, kann das Array keine Funktionen haben, die Funktion sollte außerhalb einer Klasse liegen und wird wie folgt aufgerufen:

getRating($movie['id']) 

statt

$movie->getRating($movie['id']).

Wenn Sie ein Objekt erhalten und das Objekt die Funktion implementiert

getRating($movie_id)

dann ist der Zugriff auf die Eigenschaften des Objekts wie folgt:

$movie->rating and $movie->id

Ich gehe davon aus, dass die Eigenschaften öffentlich deklariert sind. Dies ist jedoch nicht die richtige Vorgehensweise... Die Eigenschaften sollten privat sein und Sie sollten Getter und Setter für die Objekteigenschaften wie folgt implementieren:

 private $rating;
 public function get_rating()
{
  return $this->rating; 
}

Verwenden Sie in diesem Fall

, um die Bewertung abzurufen
 $movie->get_rating();

Und um der Bewertung einen Wert zuzuweisen, implementieren Sie

  public function set_rating($r)
  {
     $this->rating=$r; 
  }

Und weisen Sie den Wert so zu:

$movie->set_rating($some_rating);

Keine Ahnung, ob ich geholfen oder alles verwirrender gemacht habe :S, aber du kannst mir gerne Fragen stellen :)