$movie->getByPerma($perma,$language);
връща нещо, което не е обект.
Така че аз бих
print_r($movie)
на ред 2 и вижте какво получавам.
Второто странно нещо е в:
$movie['rating'] = $movie->getRating($movie['id']);
От лявата страна използвате $movie като масив, а от дясната страна го използвате като обект и след това отново изпратихте параметъра, който използвате $movie['id'] като масив.
И така:
Ако получавате масив, масивът не може да има функции, функцията трябва да е извън клас и ще бъде извикана по следния начин:
getRating($movie['id'])
вместо
$movie->getRating($movie['id']).
Ако получавате обект и обектът изпълнява функцията
getRating($movie_id)
тогава начинът за достъп до свойствата на обекта е:
$movie->rating and $movie->id
Предполагам, че имотите са обявени за публични. Това обаче не е правилният начин да го направите... Свойствата трябва да са частни и трябва да внедрите средства за получаване и настройка за свойствата на обектите по следния начин:
private $rating;
public function get_rating()
{
return $this->rating;
}
В този случай, за да получите оценка, използвайте
$movie->get_rating();
И за да присвоите стойност на оценката, внедрете
public function set_rating($r)
{
$this->rating=$r;
}
И задайте стойност по следния начин:
$movie->set_rating($some_rating);
Не знам дали помогнах или направих всичко по-объркващо :S, но не се колебайте да ми задавате въпроси :)