sql >> Database teknologi >  >> RDS >> Mysql

Opkald til et medlemsfunktion på et ikke-objekt - PHP

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

returnerer noget, der ikke er et objekt.

Så jeg ville

print_r($movie)

på linje 2 og se, hvad jeg får.

Den anden mærkelige ting er i:

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

På venstre side bruger du $movie som et array, og på højre side bruger du det som et objekt, og så sendte du igen parameteren du bruger $movie['id'] som et array.

Så:

Hvis du får et array, kan arrayet ikke have funktioner, funktionen skal være uden for en klasse og vil blive kaldt sådan:

getRating($movie['id']) 

i stedet for

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

Hvis du får et objekt, og objektet implementerer funktionen

getRating($movie_id)

så er måden at få adgang til objektets egenskaber på:

$movie->rating and $movie->id

Jeg går ud fra, at ejendommene er erklæret offentlige. Dette er dog ikke den korrekte måde at gøre det på... Egenskaberne skal være private, og du bør implementere gettere og sættere for objektegenskaberne som denne:

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

I dette tilfælde skal du bruge

for at få bedømmelsen
 $movie->get_rating();

Og for at tildele en værdi til vurderingen skal du implementere

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

Og tildel værdi som denne:

$movie->set_rating($some_rating);

Ved ikke om jeg hjalp eller gjorde alt mere forvirrende :S men stil mig gerne spørgsmål :)



  1. mysql + opdatering top n

  2. Hvad er en flad fildatabase? Hvordan adskiller det sig fra en relationel database?

  3. FieldShield SDK

  4. Hvordan opretter man forbindelse til Oracle 10g fra fjernklient?