$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 :)