Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton i przekazywanie wartosci
cichy
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Cudi
post
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.
Go to the top of the page
+Quote Post
cichy
post
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
Go to the top of the page
+Quote Post

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: 19.09.2025 - 15:51