Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: __desctruct() jak?
Forum PHP.pl > Forum > PHP > Object-oriented programming
eS...
mam taka marna klase smile.gif i zastanawiam sie jak uzyc __destruct
  1. <?
  2. class BD {
  3. var $host = '';
  4. var $user = '';
  5. var $pass = '';
  6. var $dbname = '';
  7.  
  8. function __construct(){
  9. $this->connect();
  10. }
  11.  
  12. function connect(){
  13. mysql_connect($this->host,$this->user,$this->pass) or die ($this->error());
  14. mysql_select_db($this->dbname)or die ($this->error());
  15. }
  16.  
  17. function error(){
  18. echo &#092;"error\";
  19. error_log(&#092;"Błąd na stronie\", 1, \"admin@admin.pl\",\"Subject:błąd:From:eroor class\");
  20. }
  21.  
  22. //  chodzi mi o to czy to robi sie tak
  23.  function __destruct(){
  24.  $this->connect();
  25. }
  26. //czy poprostu wywoluje sie sama funkcje __destruct i po sprawie??
  27. }
  28. ?>

dzięki
bela
sprobuj unset(obiekt);
eS...
  1. <?php
  2.  
  3. unset($this);//?
  4. unset($this->connect());//??
  5.  
  6. ?>

uff zapomnialem dodac ze jezeli chodzi o OO to kiepsko u mnie
bela
nie, Panie Developerze smile.gif

  1. <?php
  2.  
  3. $obiekt = new klasa(); // tutaj wywoluje się klasa::__construct()
  4. $obiekt->blabla(); // tutaj klasa::blabla()
  5. unset($obiekt); // tutaj klasa::__destruct();
  6. ?>


winksmiley.jpg
eS...
developerze designerze tongue.gif
unset($obiekt) - i jak tu wstawic __destruct();
bo destruct mam w klasie BD i construct mam w klasie BD smile.gif i nie wiem jka to zrobic dalej
bela
wrr, jak zrobisz unset to automatycznie zostanie wywolana metoda __descruct tak samo jak przy new klasa konstruktor jest wywolywany, poczytaj co robi unset tongue.gif
Imperior
Ale to chyba tylko przypadek, że w __destruct() chcesz ustanowić połączenie? ohmy.gif
bela
destruct jak sama nazwa wskazauje powinnien byc wywyolywany przy niszczeniu obiektu
eS...
Cytat(Imperior @ 2004-12-29 10:48:41)
Ale to chyba tylko przypadek, że w __destruct() chcesz ustanowić połączenie? ohmy.gif

nie ja je chce tam zniszczyc |:->
kubatron
Cytat(eS... @ 2004-12-30 11:50:30)
Cytat(Imperior @ 2004-12-29 10:48:41)
Ale to chyba tylko przypadek, że w __destruct() chcesz ustanowić połączenie?  ohmy.gif

nie ja je chce tam zniszczyc |:->

A nie lepiej w twoim przypadku zamknąc tam połączenie?Bo niszczyć to sensu nie widze :/ zreszta ja to w swoim DBDriverze innaczej będe mieć smile.gif Zaniedługo go przedstawie smile.gif
mike
Cytat(eS... @ 2004-12-30 10:50:30)
nie ja je chce tam zniszczyc |:->

Jeżeli wydaje ci się że umieszczając coś takiego w destruktorze :
  1. <?php
  2. function __destruct()
  3. {
  4. $this->connect();
  5. }
  6. ?>


a potem robiąc :
  1. <?php
  2. unset( $objObiekt );
  3. ?>


zniszczysz połączenie z bazą danych, to jesteś w błedzie.

Owszem unset'em zniszczysz obiekt, ale nie zamkniesz połączenia z bazą utworzonego przez ten obiekt.
Dlatego musisz zrobić tak :
  1. <?php
  2. function __destruct()
  3. {
  4. $this->close();
  5. }
  6. ?>
.
kubatron
Cytat(mike_mech @ 2004-12-30 18:40:06)
Cytat(eS... @ 2004-12-30 10:50:30)
nie ja je chce tam zniszczyc |:->

Jeżeli wydaje ci się że umieszczając coś takiego w destruktorze :
  1. <?php
  2. function __destruct()
  3. {
  4.     $this->connect();
  5. }
  6. ?>


a potem robiąc :
  1. <?php
  2. unset( $objObiekt );
  3. ?>


zniszczysz połączenie z bazą danych, to jesteś w błedzie.

Owszem unset'em zniszczysz obiekt, ale nie zamkniesz połączenia z bazą utworzonego przez ten obiekt.
Dlatego musisz zrobić tak :
  1. <?php
  2. function __destruct()
  3. {
  4.     $this->close();
  5. }
  6. ?>
.

Popatrz się że wyżej to mu napisałem blink.gif A chyba do tego sam by doszedł...
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.