Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak uzyc metode obiektu innej klasy w metodzie
Forum PHP.pl > Forum > PHP
Kiler
Jak to zrobic aby do metody przekazac nazwe obiektu z innej klasy i wykorzystac jego metode??
  1. <?php
  2. class language{
  3. var $lng;
  4. var $nazwa;
  5. var $wartosc;
  6. function language($name=&#092;"pl\"){
  7. $this->lng=$name;
  8. }
  9. function wstaw($baza,$nazwa){
  10. //wykorzystanie metod klasy bazasql
  11. $baza->query(&#092;"SELECT * FROM \".$this->lng.\" WHERE nazwa 
  12.  LIKE &#092;".  $nazwa);
  13. $row=$baza->fetch_array();
  14. return $row[1]; 
  15. }
  16. }
  17. $sql = new bazasql;
  18. $sql->connect($host,$user,$haslo,$db);
  19. $lang=new language;
  20. $lang->wstaw($sql,'title');
  21. ?>
militis
klasa::$metoda(argumenty);

afair
Kiler
probowalem, ale wyrzuca mi blad: Call to undefined function: error() z klasy w/w statycznie uzytej bazasql...oczywiscie funkcja jest i dziala poprawnie w innych przykladach :/
  1. <?php
  2. class language{
  3. var $lng;
  4. var $nazwa;
  5. var $wartosc;
  6. function language($name=&#092;"pl\"){
  7. $this->lng=$name;
  8. }
  9. function zmien($name){
  10. $this->lng=$name;
  11. }
  12. function wstaw($nazwa){
  13. //
  14. bazasql::query(&#092;"SELECT * FROM \".$this->lng.\" WHERE nazwa LIKE \".$nazwa);
  15. $row=bazasql::fetch_array();
  16. return $row[1]; 
  17. }
  18. }
  19.  
  20.  
  21. $sql = new bazasql;
  22. $sql->connect($host,$user,$haslo,$db);
  23. $lang=new language;
  24. $lang->wstaw('title');
  25. ?>
militis
przed uzyciem
require('plik.z.klasa');
marcin96
  1. <?php
  2. class language{
  3.     var $lng;
  4.     var $nazwa;
  5.     var $wartosc;
  6.     function language($name=&#092;"pl\"){
  7.         $this->lng=$name;
  8.     }
  9.     function wstaw( &$baza, $nazwa){      // tutaj zmiana, bylo: $baza, jest &$baza
  10.         //wykorzystanie metod klasy bazasql
  11.         $baza->query(&#092;"SELECT * FROM \".$this->lng.\" WHERE nazwa 
  12.          LIKE &#092;".   $nazwa);
  13.         $row=$baza->fetch_array();
  14.         return $row[1]; 
  15.     }
  16. }
  17. $sql = new bazasql;
  18. $sql->connect($host,$user,$haslo,$db);
  19. $lang=new language;
  20. $lang->wstaw($sql,'title');
  21. ?>


hm?

..ale mozna to ladniej zrobic:

  1. <?php
  2. class language{
  3.     var $lng;
  4.     var $nazwa;
  5.     var $wartosc;
  6.     var $baza;
  7.  
  8.     function language( &$baza, $name=&#092;"pl\"){       // teraz &$baza tutaj..
  9.         $this->lng=$name;
  10.         $this->baza =& $baza;
  11.     }
  12.  
  13.     function wstaw($nazwa){
  14.         //wykorzystanie metod klasy bazasql
  15.         $this->baza->query(&#092;"SELECT * FROM \".$this->lng.\" WHERE nazwa 
  16.          LIKE &#092;".   $nazwa);
  17.         $row=$this->baza->fetch_array();
  18.         return $row[1]; 
  19.     }
  20. }
  21. $sql = new bazasql;
  22. $sql->connect($host,$user,$haslo,$db);
  23. $lang=new language($sql);
  24. $lang->wstaw('title');
  25. ?>


wtedy nie trzeba przy kazdym 'wstaw' przekazywac obiektu 'baza'. Poczytaj rozdzial o referencjach w manualu, jesli nie wiesz czemu teraz dziala :>)
Kiler
ok, dziala, dzieki
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.