Mysql
 sql >> Base de données >  >> RDS >> Mysql

Appel à une fonction membre sur un non-objet - PHP

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

renvoie quelque chose qui n'est pas un objet.

Alors je voudrais

print_r($movie)

sur la ligne 2 et voyez ce que j'obtiens.

La deuxième chose bizarre est dans :

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

Sur le côté gauche, vous utilisez $movie comme tableau et sur le côté droit, vous l'utilisez comme objet, puis à nouveau vous avez envoyé le paramètre que vous utilisez $movie['id'] comme tableau.

Donc :

Si vous obtenez un tableau, le tableau ne peut pas avoir de fonctions, la fonction doit être en dehors d'une classe et sera appelée comme ceci :

getRating($movie['id']) 

au lieu de

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

Si vous obtenez un objet et que l'objet implémente la fonction

getRating($movie_id)

alors la manière d'accéder aux propriétés de l'objet est :

$movie->rating and $movie->id

Je suppose que les propriétés sont déclarées publiques. Ce n'est pas la bonne façon de procéder cependant... Les propriétés doivent être privées et vous devez implémenter des getters et des setters pour les propriétés des objets comme ceci :

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

Dans ce cas, pour obtenir la note, utilisez

 $movie->get_rating();

Et pour attribuer une valeur à la note, implémentez

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

Et attribuez une valeur comme celle-ci :

$movie->set_rating($some_rating);

Je ne sais pas si j'ai aidé ou rendu tout plus confus :S mais n'hésitez pas à me poser des questions :)