$movie->getByPerma($perma,$language);
returnerer noget, der ikke er et objekt.
Så jeg ville
print_r($movie)
på linje 2 og se, hvad jeg får.
Den anden mærkelige ting er i:
$movie['rating'] = $movie->getRating($movie['id']);
På venstre side bruger du $movie som et array, og på højre side bruger du det som et objekt, og så sendte du igen parameteren du bruger $movie['id'] som et array.
Så:
Hvis du får et array, kan arrayet ikke have funktioner, funktionen skal være uden for en klasse og vil blive kaldt sådan:
getRating($movie['id'])
i stedet for
$movie->getRating($movie['id']).
Hvis du får et objekt, og objektet implementerer funktionen
getRating($movie_id)
så er måden at få adgang til objektets egenskaber på:
$movie->rating and $movie->id
Jeg går ud fra, at ejendommene er erklæret offentlige. Dette er dog ikke den korrekte måde at gøre det på... Egenskaberne skal være private, og du bør implementere gettere og sættere for objektegenskaberne som denne:
private $rating;
public function get_rating()
{
return $this->rating;
}
I dette tilfælde skal du bruge
for at få bedømmelsen $movie->get_rating();
Og for at tildele en værdi til vurderingen skal du implementere
public function set_rating($r)
{
$this->rating=$r;
}
Og tildel værdi som denne:
$movie->set_rating($some_rating);
Ved ikke om jeg hjalp eller gjorde alt mere forvirrende :S men stil mig gerne spørgsmål :)