Mam problem z działaniem tego kodu na php4
<?php class Modules { function &load($name) { } function &instance() { if ($instance === false) { $instance = new Modules(); } return $instance; } } class Test { var $zmienna; function &instance() { if ($instance === false) { $instance = new Test(); } return $instance; } } function &load($name) { $obj =& Modules::instance(); return $obj->load($name); } $db = load('Test'); $db->zmienna = 'czy dziala?'; $sql = load('Test'); ?>
Gdyby ktoś mógłby mi doradzić gdzie dokładnie stosować znaczek & w tym przykładowym kodzie i dlaczego on nie działa oraz co zrobić aby zadziałał byłbym wdzięczny.
Pozdrawiam.
-----dodane------
ok poradzilem sobie ale prosze o pewna podpowiedź.
Przykładowy kod:
<?php class DbDriver { var $connect_id; function &instance() { if($instance === false) { $instance = new DbDriver; } return $instance; } } function &load($name) { // cos robi } $db =& load('DbDriver'); $db->connect_id = 369; $sql =& load('DbDriver'); ?>
i teraz tak. na początku deklarowałem taką postać funkcji load()
<?php function &load($name) { } ?>
Jednak nie działało to. Gubiono instancję obiektu.
Zrobiłem więc tak:
<?php function &load($name) { return $a; } ?>
I teraz już wszystko ładnie działa. I teraz pytanie do Was.
Czy idzie to zrobić aby działało (czyt. ladnie przekazywało referencję) bez wywoływania eval()
