sql >> Databáze >  >> RDS >> Mysql

Volání členské funkce na non-objekt - PHP

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

vrací něco, co není objekt.

Takže bych

print_r($movie)

na řádku 2 a uvidíte, co dostanu.

Druhá podivná věc je v:

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

Na levé straně používáte $movie jako pole a na pravé straně jej používáte jako objekt a pak jste znovu odeslali parametr, který používáte $movie['id'] jako pole.

Takže:

Pokud získáváte pole, pole nemůže mít funkce, funkce by měla být mimo třídu a bude se nazývat takto:

getRating($movie['id']) 

místo

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

Pokud získáváte objekt a objekt implementuje funkci

getRating($movie_id)

pak způsob přístupu k vlastnostem objektu je:

$movie->rating and $movie->id

Předpokládám, že vlastnosti jsou deklarovány jako veřejné. Toto však není správný způsob, jak to udělat... Vlastnosti by měly být soukromé a měli byste implementovat getry a settery pro vlastnosti objektů takto:

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

V tomto případě pro získání hodnocení použijte

 $movie->get_rating();

A chcete-li hodnocení přiřadit hodnotu, implementujte

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

A přiřaďte hodnotu takto:

$movie->set_rating($some_rating);

Nevím, jestli jsem pomohl nebo udělal všechno více matoucí :S, ale klidně se mě zeptejte :)



  1. ORA-00907:chybí pravá závorka

  2. Kopírovat v Postgresql:Absolutní cesta interpretována jako relativní cesta

  3. Jarní transakce a rollback na více stolech

  4. SSRS:Jak přidat možnost Vše do rozbalovacího filtru SSRS?