Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]odwołanie się do funkcji z innej klasy
qba10
post
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

Ostrzeżenie: (0%)
-----


Czy mogę się odwołać do funkcji wykonaj() z klasy test w funkcji zadanie() w klasie test2 ?
  1. <?php
  2. class test
  3. {
  4.  
  5. public function wykonaj()
  6. {
  7. //tresc funkcji
  8.  
  9. }
  10.  
  11.  
  12. }
  13.  
  14.  
  15. class test2
  16. {
  17. public function zadanie ()
  18.  
  19. {
  20. //tresc funkcji
  21.  
  22. test::wykonaj() ;
  23. }
  24. }
  25. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
qba10
post
Post #2





Grupa: Zarejestrowani
Postów: 264
Pomógł: 20
Dołączył: 19.08.2007
Skąd: Bryńsk k. Lidzbarka Welskiego (nie mylić z Warmińskim)

Ostrzeżenie: (0%)
-----


Mam oto taki skrypt:
  1. <?php
  2. class bazadanych
  3. {
  4.  
  5. public static $rodzaj;
  6.  
  7.  
  8.  
  9.  
  10.  
  11. public $log;
  12. public $log_string;
  13. public $log_rodzaj;
  14. public $log_error;
  15.  
  16. public function __construct($rodzaj, $host, $user, $password, $db)
  17.  {
  18. $this -> wybor_bazy_danych($rodzaj, $host, $user, $password, $db);
  19. $this -> rodzaj = $rodzaj ; 
  20. $this -> log($this -> log, $this -> log_string, $this -> log_rodzaj, $this -> log_error) ;
  21.  }
  22.  
  23. public function wybor_bazy_danych($rodzaj, $host, $user, $password, $db)
  24. {
  25.  
  26. if ($rodzaj == 'mysql') 
  27. {
  28. $connect = @mysql_connect($host, $user, $password );
  29. if (!$connect)
  30. {
  31. $this -> log = 'error';
  32. $this -> log_string = 'polaczenie z baza danych';
  33. $this -> log_rodzaj = 'funkcja $bazadanych ->wybor_bazy_danych()';
  34. $this -> log_error =  mysql_error();
  35. die ( include ('system/jadro/e-door/includes/error_bazadanych.php'));
  36. }
  37.  
  38. }
  39. elseif ($rodzaj == 'pg')
  40. {
  41. $connect = @pg_connect($host, $user, $password );
  42. if (!$connect)
  43. {
  44. $this -> log = 'error';
  45. $this -> log_string = 'polaczenie z baza danych';
  46. $this -> log_rodzaj = 'funkcja $bazadanych ->wybor_bazy_danych()';
  47. $this -> log_error =  pg_error();
  48. die ( include ('system/jadro/e-door/includes/error_bazadanych.php'));
  49. }
  50.  
  51. }
  52.  
  53.  
  54.  
  55.  
  56. if($connect and $rodzaj =='mysql' ) {
  57. $connect_db = @mysql_select_db($db) ;
  58. if (!$connect_db)
  59. {
  60.  $this -> log = 'error';
  61. $this -> log_string = 'wybor bazy danych';
  62. $this -> log_rodzaj = 'funkcja $bazadanych ->wybor_bazy_danych()';
  63. $this -> log_error =  mysql_error();
  64. die ( include ('system/jadro/e-door/includes/error_bazadanych_db.php'));
  65.  
  66.  
  67. }
  68. }
  69. elseif($connect and $rodzaj =='pg' ) 
  70. { 
  71. $connect_db = @pg_select_db($db) ;  
  72.  if (!$connect_db)
  73. {
  74.  $this -> log = 'error';
  75. $this -> log_string = 'wybor bazy danych';
  76. $this -> log_rodzaj = 'funkcja $bazadanych ->wybor_bazy_danych()';
  77. $this -> log_error =  mysql_error();
  78. die ( include ('system/jadro/e-door/includes/error_bazadanych_db.php'));
  79.  
  80.  
  81. }
  82. }
  83. if($connect_db) { return true; } else {return false; }
  84.  
  85.  
  86.  
  87. }
  88.  
  89.  
  90.  
  91.  
  92.  //wykonywanie polecen SQL 
  93. public static function wykonaj($polecenie)
  94. {
  95. #mysql
  96. if ('mysql' == $this -> rodzaj)
  97. {
  98. $zapytanie = mysql_query($polecenie) ;
  99. if ($zapytanie)
  100. {
  101. return $zapytanie;
  102. }
  103. else
  104. {
  105. $this -> log ='error';
  106. $this -> log_string = $polecenie ;
  107. $this -> log_rodzaj = 'funkcja $bazadanych -> wykonaj()';
  108. $this -> log_error =  mysql_error() ;
  109.  
  110.  
  111.  
  112. }
  113. }
  114. #postgresql
  115. if ('pg' == $this -> rodzaj)
  116. {
  117. $zapytanie = pg_query($polecenie) ;
  118. if ($zapytanie)
  119. {
  120. return $zapytanie;
  121. }
  122. else
  123. {
  124.  
  125. $this -> log = 'error';
  126. $this -> log_string = $polecenie ;
  127. $this -> log_rodzaj = 'funkcja $bazadanych -> wykonaj()';
  128. $this -> log_error =  pg_error() ;
  129.  
  130. die (pg_error());
  131. }
  132. }
  133.  
  134.  
  135. }
  136.  
  137.  
  138. //System logów
  139. public function log($log, $string, $rodzaj, $error)
  140. {
  141. if ('error' == $log)
  142. {
  143. $data = date('Y-m-d H:i:s');
  144. return 'Data: '.$data.', Rodzaj bazy danych: '.$this -> rodzaj.' Rodzaj błędu: '.$rodzaj.', Wykonywane działanie: '.$string.', Wartość błędu: '.$error ;
  145.  
  146. }
  147.  
  148. }
  149.  
  150.  
  151.  
  152. }
  153. ?>

Teraz po ustawieniu metody statycznej, wywala mi błąd, że w lini 96 ($this -> rodzaj) nie jest obiektem. Jak to poprawic?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 01:48