Mysql
 sql >> Database >  >> RDS >> Mysql

Chiamata a una funzione membro su un non oggetto - PHP

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

restituisce qualcosa che non è un oggetto.

Quindi lo farei

print_r($movie)

sulla linea 2 e guarda cosa ricevo.

La seconda cosa strana è in:

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

Sul lato sinistro stai usando $movie come array e sul lato destro lo stai usando come oggetto e poi di nuovo hai inviato il parametro che usi $movie['id'] come array.

Quindi:

Se stai ottenendo un array, l'array non può avere funzioni, la funzione dovrebbe essere esterna a una classe e verrà chiamata in questo modo:

getRating($movie['id']) 

invece di

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

Se stai ricevendo un oggetto e l'oggetto implementa la funzione

getRating($movie_id)

quindi il modo per accedere alle proprietà dell'oggetto è:

$movie->rating and $movie->id

Presumo che le proprietà siano dichiarate pubbliche. Questo non è il modo corretto di farlo però... Le proprietà dovrebbero essere private e dovresti implementare getter e setter per le proprietà degli oggetti come questa:

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

In questo caso per ottenere la valutazione, utilizzare

 $movie->get_rating();

E per assegnare un valore alla valutazione, implementa

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

E assegna un valore in questo modo:

$movie->set_rating($some_rating);

Non so se ho aiutato o reso tutto più confuso :S ma sentiti libero di farmi domande :)