![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Przyjaciele php.pl Postów: 197 Pomógł: 0 Dołączył: 9.09.2003 Skąd: z Marsa Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Od tygodnia walcze z singletonem (przejrzalem cale forum i kawałek google) ale niestety nie wychodzi mi to. Czy ktoś mógłby mi wytłumaczyć na moim przykładzie co tutaj jest źle i dalczego to nie działa? Ewentualnie przrobić ten skrypt tak żeby działał (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) [php:1:e10f162ad9]<?php function & instance($clasa) { static $inst; if (@is_null($inst[$clasa])) { $inst[$clasa] = new $clasa; } return $inst[$clasa]; } class db { var $test2; function db() { $this -> test2 = &instance('test'); $this -> test2 -> add('db', 'wartosc'); } } class test { var $arr = array(); function add($zmienna, $wartosc) { $this ->arr [ $zmienna ] = $wartosc; } function print_all() { print_r($this -> arr); } } class main { var $db; var $test; function main() { $this -> test = new test; $this -> db = new db; $this -> test -> add('main', 'wartosc'); } } $core = new main; $core -> test -> add('core', 'wartosc core'); $core -> test -> print_all(); /* powinno wyswietlic: Array ( [main] => wartosc [core] => wartosc core [db] => wartosc ) no chyba ze w innej kolejnosci (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) */ ?>[/php:1:e10f162ad9] Pozdro |
|
|
![]() |
![]()
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%) ![]() ![]() |
Jeżeli masz już funkcję do tworzenia i przechowywania instancji, do dla obiektów które chcesz mieć ogólnodostępne korzystaj tylko z niej.
[php:1:e798de67a5]<?php $this -> test = new test; $this -> db = new db; ?>[/php:1:e798de67a5] Zamień na: [php:1:e798de67a5]<?php $this -> test = &instance(' test'); $this -> db = &instance('db'); ?>[/php:1:e798de67a5] Inaczej w klasach db i main będziesz operował na innej instancji klasy test, więc dane zostaną rozdzielone na dwa miejsca. |
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 197 Pomógł: 0 Dołączył: 9.09.2003 Skąd: z Marsa Ostrzeżenie: (0%) ![]() ![]() |
No wielkie dzięki...
już przynajmniej wiem gdzie robiłem błąd (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Pozdro |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.09.2025 - 15:51 |