![]() |
![]() |
![]()
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
|
|
Grupa: Zarejestrowani Postów: 270 Pomógł: 0 Dołączył: 15.06.2003 Ostrzeżenie: (0%) ![]() ![]() |
Cytat jeżeli php4 to zmienne statyczne działają tylko w zwykłych funkcjach (poza klasą)
tego mi brakowało. wielkie dzieki. Update : Hm ale dziwne jest to że przy singletonie dział poprawnie pomimo że jest w klasie. [php:1:75d476f7be]<?php class test{ var $error; function test() { $this -> error = &test::getInstance('error'); $this -> error -> test = "set"; var_dump($this->error); $this -> error = &test::getInstance('error'); var_dump($this->error); $this -> error = &test::getInstance('error'); var_dump($this->error); } function &getInstance($class) { static $instance = array(); if (!isset($instance[$class])) { $instance[$class] = new $class(); } return $instance[$class]; } } class error{ function error(){ return true; } } ?>[/php:1:75d476f7be] Kod object(error)
'test' => 'set' object(error) 'test' => 'set' object(error) 'test' => 'set' |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.09.2025 - 17:42 |