Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Gọi đến một hàm thành viên trên một không đối tượng - PHP

$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 :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi mọi truy vấn MySQL vào một tệp bằng cách bật Đăng nhập chung trong MAMP

  2. Tạo LocalDate ngẫu nhiên với java.time

  3. Sử dụng Java để sao lưu từ xa cơ sở dữ liệu MySQL

  4. JDBC / Connectorj:Hiểu tổng hợp kết nối

  5. Làm cách nào để sử dụng ngay bây giờ () trong Doctrine 2 DQL?