Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%)
|
Zmienne typu static powinny po pierwszym prezyjęciu wartości cały czas potem mieć tą samą wartość. Działa to dobrze z np singleton'ami ale czemu w tm przykładzie nie działa ?
Dodam ze w manulau nie ma o static wiec trudniej znalezc blad i mojha wiedza jest bardziej z przykładów. [php:1:0ac8a54207]<?php class DB { var $sql; function DB($server = null, $user = null, $password = null, $database = null) { var_dump($server, $user, $password, $database); // zmienne maja wartosc podana static $server, $user, $password, $database; var_dump($server, $user, $password, $database); // zmienne przymuja wartosc null $this->sql = mysql_connect($server,$user,$password) or die("Nie można sie polaczyc !!"); mysql_select_db($database) or die("Baza mysql nieistnieje !!"); return true; } function &getDBInstance() { static $DBinstance = null; if (!isset($DBinstance)) { $DBinstance = new DB(); } return $DBinstance; ?>[/php:1:0ac8a54207] } [php:1:0ac8a54207]<?php class test{ var ......; function test(){ $this -> db = &new DB($server, $user, $password, $database); var_dump($this); $this -> db = &DB::getDBInstance(); var_dump($this); } ?>[/php:1:0ac8a54207] |
|
|
|
![]() |
Post
#2
|
|
|
Administrator planeta/IRC Grupa: Przyjaciele php.pl Postów: 385 Pomógł: 0 Dołączył: 19.04.2003 Skąd: Zabrze Ostrzeżenie: (0%)
|
Cytat zmienne statyczne działają tylko w zwykłych funkcjach (poza klasą)
W metodach klasy też działają (inaczej singleton trzebaby opierać na przechowywaniu referencji do obiektu w $GLOBALS), ale gorzej może być z działaniem w kontruktorze, który jest trochu bardziej specyficzną metodą, wiadomo że nie wywołuje się jej wielokrotnie ale raz podczas tworzenia instancji. Dlatego lepiej jest (tak jak w przykładzie nr. 2) powsadzać te dane w zmienne klasowe, a nie bawić się w statici (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Bora Static 18.03.2004, 14:01:51
Ozzy jeżeli to ma być php5 to poczytaj najpierw http://... 18.03.2004, 14:18:23
Bora Cytatjeżeli php4 to zmienne statyczne działają tyl... 18.03.2004, 14:24:47
Ozzy CytatHm ale dziwne jest to że przy singletonie dzi... 18.03.2004, 14:59:46
Bora Tez tak sprawdzałem. robiłem kolejny przykłąd.
Z t... 18.03.2004, 16:47:19 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 18:05 |