sql >> Base de Datos >  >> RDS >> Mysql

Llamada a una función miembro en un no objeto - PHP

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

está devolviendo algo que no es un objeto.

Entonces lo haría

print_r($movie)

en la línea 2 y mira lo que obtengo.

La segunda cosa extraña está en:

$movie['rating'] = $movie->getRating($movie['id']);

En el lado izquierdo, está usando $movie como una matriz y en el lado derecho lo está usando como un objeto y luego envió nuevamente el parámetro que usa $movie['id'] como una matriz.

Entonces:

Si obtiene una matriz, la matriz no puede tener funciones, la función debe estar fuera de una clase y se llamará así:

getRating($movie['id']) 

en lugar de

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

Si obtiene un objeto y el objeto implementa la función

getRating($movie_id)

entonces la forma de acceder a las propiedades del objeto es:

$movie->rating and $movie->id

Supongo que las propiedades se declaran públicas. Sin embargo, esta no es la forma correcta de hacerlo... Las propiedades deben ser privadas y debe implementar captadores y definidores para las propiedades de los objetos como esta:

 private $rating;
 public function get_rating()
{
  return $this->rating; 
}

En este caso, para obtener la calificación, use

 $movie->get_rating();

Y para asignarle un valor a la calificación, implementa

  public function set_rating($r)
  {
     $this->rating=$r; 
  }

Y asigne un valor como este:

$movie->set_rating($some_rating);

No sé si ayudé o hice todo más confuso :S pero siéntete libre de hacerme preguntas :)