Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Chamada para uma função de membro em um não-objeto - PHP

$movie->getByPerma($perma,$language); 

está retornando algo que não é um objeto.

Então eu faria
print_r($movie)

na linha 2 e veja o que estou recebendo.

A segunda coisa estranha está em:
$movie['rating'] = $movie->getRating($movie['id']);

No lado esquerdo você está usando $movie como um array e no lado direito você o está usando como um objeto e então novamente você enviou o parâmetro que você usa $movie['id'] como um array.

Então:

Se você está recebendo um array, o array não pode ter funções, a função deve estar fora de uma classe e será chamada assim:
getRating($movie['id']) 

em vez de
$movie->getRating($movie['id']).

Se você está obtendo um objeto e o objeto implementa a função
getRating($movie_id)

então a maneira de acessar as propriedades do objeto é:
$movie->rating and $movie->id

Estou assumindo que as propriedades são declaradas públicas. Esta não é a maneira correta de fazer isso... As propriedades devem ser privadas e você deve implementar getters e setters para as propriedades dos objetos assim:
 private $rating;
 public function get_rating()
{
  return $this->rating; 
}

Neste caso, para obter a classificação, use
 $movie->get_rating();

E para atribuir um valor à classificação, implemente
  public function set_rating($r)
  {
     $this->rating=$r; 
  }

E atribua valor assim:
$movie->set_rating($some_rating);

Não sei se ajudei ou deixei tudo mais confuso :S mas sinta-se à vontade para me fazer perguntas :)