Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Odwolanie do funkcji z innej klasy
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam,

Mam sobie klase Database w ktorej mam nastepujaca funkcje :

  1. public function query($sql) {
  2. $resultSet = mysql_query($sql, $this->connection);
  3. $result = array();
  4. while($r = mysql_fetch_assoc($resultSet)) {
  5. $result[] = $r;
  6. }
  7. return $result;
  8. }


I teraz w innej klasie ktora oddziela zapytania sql od klasy Database mam oto taka przykladowa funkcje :

  1. function find($id) {
  2. if(!$result = mysql_query("SELECT * FROM $this->tableName WHERE id='$id'")){
  3. throw new Exception('Error finding row');
  4. }
  5. $row = mysql_fetch_assoc($result);
  6. print_r($row);
  7. }


Teraz moje pytanie brzmi , jak odwolac sie w funkcji find() do funkcji query() zeby nie trzeba bylo powtarzac funkcji mysql_query ?

Jak to przerobic ?
wookieb
To już chyba 4 podobny twój temat dziś! Naprawdę tak trudno zerknąć w byle jakiego frameworka i to sprawdzić??

W klasie która ma find pobierz lub przekaż sobie egzemplarz klasy database i po sprawie. I nie pytaj się JAK bo jest na to mnóstwo sposobów.
Wolfie
Jakbym wiedzial jak sie przekazuje egzemplarz to nie pisalbym na forum.....

Mozna jakis przyklad prosic ?
wookieb
Identycznie jak się przekazuje parametry do metody. Identycznie jak zapisujesz wlasciwosc w klasie.
Wolfie
nie kumam, mozna przyklad ?

Parametr do funkcji przekazuje sie tak metoda($parametr) ale co to ma wspolnego z odwolaniem sie do innej klasy to jest dla mnie zagadka....
wookieb
Mlask...
  1.  
  2. class twojaKlasa
  3. {
  4. private $db;
  5. public function __construct($db)
  6. {
  7. $this->db=$db;
  8. }
  9.  
  10. public function find()
  11. {
  12. $this->db->query();
  13. }
  14. }


Możesz też uzyskać egzemplarz db w inny sposob. ale to przestudiuj sobie wzorce projektowe typu registry, factory, singleton
Wolfie
Ale ja chce przeciez odwolac sie do funkcji z innej klasy a nie tej samej kalsy.....

Jesli dobrze rozumiem to $db ma byc egzemplarzem klasy czyli ?

  1.  
  2. function __construct(new MySqlDatabase) {
  3. $this->db = new MySqlDatabase;
  4. }


Czy tak ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.