Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Referencje i zmienne static
Forum PHP.pl > Forum > PHP
cagrET
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 ?
adwol
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]
cagrET
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 ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.