$movie->getByPerma($perma,$language);
vrací něco, co není objekt.
Takže bych
print_r($movie)
na řádku 2 a uvidíte, co dostanu.
Druhá podivná věc je v:
$movie['rating'] = $movie->getRating($movie['id']);
Na levé straně používáte $movie jako pole a na pravé straně jej používáte jako objekt a pak jste znovu odeslali parametr, který používáte $movie['id'] jako pole.
Takže:
Pokud získáváte pole, pole nemůže mít funkce, funkce by měla být mimo třídu a bude se nazývat takto:
getRating($movie['id'])
místo
$movie->getRating($movie['id']).
Pokud získáváte objekt a objekt implementuje funkci
getRating($movie_id)
pak způsob přístupu k vlastnostem objektu je:
$movie->rating and $movie->id
Předpokládám, že vlastnosti jsou deklarovány jako veřejné. Toto však není správný způsob, jak to udělat... Vlastnosti by měly být soukromé a měli byste implementovat getry a settery pro vlastnosti objektů takto:
private $rating;
public function get_rating()
{
return $this->rating;
}
V tomto případě pro získání hodnocení použijte
$movie->get_rating();
A chcete-li hodnocení přiřadit hodnotu, implementujte
public function set_rating($r)
{
$this->rating=$r;
}
A přiřaďte hodnotu takto:
$movie->set_rating($some_rating);
Nevím, jestli jsem pomohl nebo udělal všechno více matoucí :S, ale klidně se mě zeptejte :)