$movie->getByPerma($perma,$language);
đang trả về một thứ gì đó không phải là một đối tượng.
Vì vậy, tôi sẽ
print_r($movie)
trên dòng 2 và xem những gì tôi nhận được.
Điều thứ hai nằm trong:
$movie['rating'] = $movie->getRating($movie['id']);
Ở phía bên trái, bạn đang sử dụng $ movie dưới dạng một mảng và ở phía bên phải, bạn đang sử dụng nó như một đối tượng và sau đó bạn lại gửi tham số mà bạn sử dụng $ movie ['id'] làm mảng.
Vì vậy:
Nếu bạn đang nhận một mảng, mảng không thể có hàm, hàm phải nằm ngoài một lớp và sẽ được gọi như thế này:
getRating($movie['id'])
istead of
$movie->getRating($movie['id']).
Nếu bạn đang nhận một đối tượng và đối tượng thực thi chức năng
getRating($movie_id)
thì cách để truy cập các thuộc tính của đối tượng là:
Xếp hạng$movie->rating and $movie->id
Tôi cho rằng các thuộc tính được khai báo công khai. Mặc dù vậy, đây không phải là cách chính xác ... Các thuộc tính phải là riêng tư và bạn nên triển khai getters và setters cho các thuộc tính đối tượng như sau:
Đánh giá private $rating;
public function get_rating()
{
return $this->rating;
}
Trong trường hợp này để nhận được xếp hạng, hãy sử dụng
$movie->get_rating();
Và để gán một giá trị cho xếp hạng, hãy triển khai
public function set_rating($r)
{
$this->rating=$r;
}
Và gán giá trị như thế này:
$movie->set_rating($some_rating);
Không hiểu nếu tôi đã giúp hoặc làm mọi thứ trở nên khó hiểu hơn:S nhưng hãy đặt câu hỏi cho tôi :)