$movie->getByPerma($perma,$language);
zwraca coś, co nie jest obiektem.
Więc chciałbym
print_r($movie)
w linii 2 i zobacz, co otrzymuję.
Druga dziwna rzecz jest w:
$movie['rating'] = $movie->getRating($movie['id']);
Po lewej stronie używasz $movie jako tablicy, a po prawej jako obiektu, a następnie ponownie wysłałeś parametr, którego używasz $movie['id'] jako tablicy.
A więc:
Jeśli otrzymujesz tablicę, tablica nie może mieć funkcji, funkcja powinna znajdować się poza klasą i będzie wywoływana w następujący sposób:
getRating($movie['id'])
zamiast
$movie->getRating($movie['id']).
Jeśli otrzymujesz obiekt, który implementuje funkcję
getRating($movie_id)
wtedy sposobem na dostęp do właściwości obiektu jest:
$movie->rating and $movie->id
Zakładam, że nieruchomości są zadeklarowane jako publiczne. Nie jest to jednak właściwy sposób... Właściwości powinny być prywatne i powinieneś zaimplementować gettery i settery dla właściwości obiektów w następujący sposób:
private $rating;
public function get_rating()
{
return $this->rating;
}
W takim przypadku, aby uzyskać ocenę, użyj
$movie->get_rating();
Aby przypisać wartość do oceny, zaimplementuj
public function set_rating($r)
{
$this->rating=$r;
}
I przypisz wartość w ten sposób:
$movie->set_rating($some_rating);
Nie wiem, czy pomogłem lub zrobiłem wszystko bardziej zagmatwane :S, ale możesz zadać mi pytania :)