$movie->getByPerma($perma,$language);
returnerar något som inte är ett objekt.
Så jag skulle
print_r($movie)
på rad 2 och se vad jag får.
Den andra konstiga saken är i:
$movie['rating'] = $movie->getRating($movie['id']);
På vänster sida använder du $movie som en array och på höger sida använder du den som ett objekt och sedan skickade du igen parametern du använder $movie['id'] som en array.
Så:
Om du får en array kan arrayen inte ha funktioner, funktionen bör vara utanför en klass och kommer att anropas så här:
getRating($movie['id'])
istället för
$movie->getRating($movie['id']).
Om du får ett objekt, och objektet implementerar funktionen
getRating($movie_id)
sättet att komma åt objektets egenskaper är:
$movie->rating and $movie->id
Jag antar att fastigheterna är offentliggjorda. Detta är dock inte det korrekta sättet att göra det... Egenskaperna bör vara privata och du bör implementera getters och seters för objektens egenskaper så här:
private $rating;
public function get_rating()
{
return $this->rating;
}
I det här fallet för att få betyget, använd
$movie->get_rating();
Och för att tilldela betyget ett värde, implementera
public function set_rating($r)
{
$this->rating=$r;
}
Och tilldela värde så här:
$movie->set_rating($some_rating);
Vet inte om jag hjälpte eller gjorde allt mer förvirrande :S men ställ gärna frågor till mig :)