Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP/OOP][PHP/OOP] Jak wywołać metody klasy agregowanej poza klasą?
padalec83
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.02.2006

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


Witajcie!!
Chyba najłatwiej bedzie jak pokaze kod php:
  1. <?php 
  2. class DbAccess 
  3. { 
  4.  
  5. static private $self= null; 
  6.  
  7. private $con; 
  8.  
  9. protected function __construct() 
  10. { 
  11. $sDSN=array( 
  12. 'phptype'=>DB_TYPE, 
  13. 'username'=>DB_USER, 
  14. 'password'=>DB_PASSWORD, 
  15. 'hostspec'=>DB_HOST, 
  16. 'database'=>DB_NAME, 
  17. ); 
  18. if(DB::isError($this->con=DB::connect($sDSN))) 
  19. throw new DB__Error('<b>'.str_replace('nativecode=','',$this->con->getUserInfo()).'</b>',$this->con->getCode()); 
  20. else 
  21. return $this->con;  
  22. } 
  23. static public function is_connected() 
  24. { 
  25. if(self::$self===NULL) 
  26.  self::$self = new DbAccess(); 
  27.  return self::$self; 
  28. } 
  29. } 
  30. ?>


jezeli w klasie DbAccess odowałm sie do ktorejkolwiek z metod pakietu DB jest ok mam je dostepne poprzez php:
  1. <?php 
  2.  $this->con->getOne(); 
  3. ?>

Ale jezeli chce sie odwolac do tych samych metod poza ta klasa czyli php:
  1. <?php 
  2. claass Testowa 
  3. { 
  4. public function jakas_funkcja() 
  5. { 
  6.  
  7.  $dbh=DbAccess::is_connected(); 
  8. $dbh->getOne(); 
  9.  } 
  10. } 
  11. } 
  12. ?>


php generuje mi blad ze nie ma takiej metody. W jaki sposob ma sie dostac do metod klasy nizszej??
Pozdrawiam i zgóry dziwkuje za pomoc

Ten post edytował padalec83 20.06.2007, 14:17:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
padalec83
post
Post #2





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.02.2006

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


Cytat(nospor @ 20.06.2007, 14:35:36 ) *
przeciez DBAccess nie ma metody getOne(). Metodę ten posiada obiekt $con, ktory jest wlasciwoscią DbAccess. Musisz wiec pisac:
  1. <?php
  2. $dbh->con->getOne();
  3. ?>

Oczywiscie to ci nie zadziala, gdyż $con jest wlasciwoscia prywatną. Musisz zmienic na public

Dzieki wielkie, myslalem ze uda mi sie jakos to obejsc ale najwyrazniej albo bede musial wszstkie metody klasy DbAccess uczynic statycznymi, albo wlasciwosc $con zrobic publiczna i tu mam kolejne pytanie, który sposob bedzie leprzy??
PS bede uwazal zeby nie denerwowac Pan Romana (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ten post edytował padalec83 21.06.2007, 07:13:54
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: 7.10.2025 - 00:34