$movie->getByPerma($perma,$language);
mengembalikan sesuatu yang bukan objek.
Jadi saya akan
print_r($movie)
di baris 2 dan lihat apa yang saya dapatkan.
Hal aneh kedua ada di:
$movie['rating'] = $movie->getRating($movie['id']);
Di sisi kiri Anda menggunakan $movie sebagai array dan di sisi kanan Anda menggunakannya sebagai objek dan sekali lagi Anda mengirim parameter yang Anda gunakan $movie['id'] sebagai array.
Jadi:
Jika Anda mendapatkan array, array tidak dapat memiliki fungsi, fungsi tersebut harus berada di luar kelas dan akan dipanggil seperti ini:
getRating($movie['id'])
bukannya
$movie->getRating($movie['id']).
Jika Anda mendapatkan objek, dan objek tersebut mengimplementasikan fungsi
getRating($movie_id)
maka cara mengakses property dari objek tersebut adalah :
$movie->rating and $movie->id
Saya berasumsi bahwa properti dinyatakan publik. Ini bukan cara yang benar untuk melakukannya... Properti harus bersifat pribadi dan Anda harus mengimplementasikan getter dan setter untuk properti objek seperti ini:
private $rating;
public function get_rating()
{
return $this->rating;
}
Dalam hal ini untuk mendapatkan peringkat, gunakan
$movie->get_rating();
Dan untuk memberi nilai pada peringkat, terapkan
public function set_rating($r)
{
$this->rating=$r;
}
Dan berikan nilai seperti ini:
$movie->set_rating($some_rating);
Entah apakah saya membantu atau membuat semuanya lebih membingungkan :S tetapi jangan ragu untuk bertanya kepada saya :)