Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Referencje i zmienne static
cagrET
post 6.12.2003, 15:39:58
Post #1





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Opole

Ostrzeżenie: (0%)
-----


Otoz jest taki kawalek kodu php:

[php:1:28e0ae4307]
<?php

class Test {

function &factory() {
return new Test;
}

function &singleton() {
static $instance;
if (!isset($instance)) {
$instance =& Test::factory();
}
return $instance;
}

}

$Test1 =& Test::singleton();
$Test1->aaa = 1;

$Test2 =& Test::singleton();

print_r($Test1);
print_r('<br>');
print_r($Test2);

?>
[/php:1:28e0ae4307]

i wyswietla on:

Kod
test Object ( [aaa] => 1 )

test Object ( )


Dlaczego ?


--------------------
code.gosu.pl
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
adwol
post 6.12.2003, 20:15:33
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

Ostrzeżenie: (0%)
-----


Zamień w funkcji Test::singleton:
[php:1:df19184c2f]<?php
$instance =& Test::factory();
?>[/php:1:df19184c2f]
na:
[php:1:df19184c2f]<?php
$instance = Test::factory();
?>[/php:1:df19184c2f]
Go to the top of the page
+Quote Post
cagrET
post 7.12.2003, 03:46:49
Post #3





Grupa: Zarejestrowani
Postów: 90
Pomógł: 0
Dołączył: 3.04.2003
Skąd: Opole

Ostrzeżenie: (0%)
-----


dlaczego jak zmienie na:
[php:1:a63316ff89]
function &singleton() {
if (!isset($GLOBALS['instance'])) {
$GLOBALS['instance'] =& Test::factory();
}
return $GLOBALS['instance'];
}
[/php:1:a63316ff89]
to wszystko dziala ok ?
Pozatym jak usune w tym przypadku ta referencje, to tez dziala ok.
A w dokumentacji jest napisane, ze przy przekazywaniu obiektow referencje nalezy dac przy definiowaniu funkcji i przy jej wywolaniu ...


--------------------
code.gosu.pl
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2025 - 14:37