Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wywołanie funkcji elementu członkowskiego na obiekcie niebędącym obiektem - PHP

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

zwraca coś, co nie jest obiektem.

Więc chciałbym

print_r($movie)

w linii 2 i zobacz, co otrzymuję.

Druga dziwna rzecz jest w:

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

Po lewej stronie używasz $movie jako tablicy, a po prawej jako obiektu, a następnie ponownie wysłałeś parametr, którego używasz $movie['id'] jako tablicy.

A więc:

Jeśli otrzymujesz tablicę, tablica nie może mieć funkcji, funkcja powinna znajdować się poza klasą i będzie wywoływana w następujący sposób:

getRating($movie['id']) 

zamiast

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

Jeśli otrzymujesz obiekt, który implementuje funkcję

getRating($movie_id)

wtedy sposobem na dostęp do właściwości obiektu jest:

$movie->rating and $movie->id

Zakładam, że nieruchomości są zadeklarowane jako publiczne. Nie jest to jednak właściwy sposób... Właściwości powinny być prywatne i powinieneś zaimplementować gettery i settery dla właściwości obiektów w następujący sposób:

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

W takim przypadku, aby uzyskać ocenę, użyj

 $movie->get_rating();

Aby przypisać wartość do oceny, zaimplementuj

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

I przypisz wartość w ten sposób:

$movie->set_rating($some_rating);

Nie wiem, czy pomogłem lub zrobiłem wszystko bardziej zagmatwane :S, ale możesz zadać mi pytania :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL SELECT unikalna kolumna, w której inna kolumna to max

  2. Zapytania MySQL XML

  3. Mecz MySQL przeciwko - W TRYBIE BOOLEAN?

  4. Dynamiczny SQL Pivot (z CONVERT DateField

  5. ORDER BY data z datami przeszłymi po datach nadchodzących