Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP5... Funkcija vraca objekat

[es] :: PHP :: PHP5... Funkcija vraca objekat

[ Pregleda: 3097 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ilija Studen
Novi Sad

Član broj: 3864
Poruke: 859
*.ftn.ns.ac.yu

Sajt: www.activecollab.com


+1 Profil

icon PHP5... Funkcija vraca objekat21.04.2004. u 09:10 - pre 243 meseci
Kada funkcija vraca objekat sta dobijam? Referencu?

Ako ne kako da kazem f-ji da vrati bas referencu?
http://www.activecollab.com - Alat za upravljanje projektima
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
195.252.85.*

Sajt: localhost


+5 Profil

icon Re: PHP5... Funkcija vraca objekat21.04.2004. u 11:40 - pre 243 meseci
u php5 se svi objekti prenose baš kao reference (slično kao u javi). svaka takva funkcija u stvari vraća referencu.

implicitno kopiranje objekta se nikada ne dešava. ako pak nasuprot želiš da iskopiraš objekat (i dobiješ drugu zasebnu instancu sa istim svojstvima i osobinama), moraš explicitno da pozoveš __clone() metod (opet slično javi ;).

 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: PHP5... Funkcija vraca objekat21.04.2004. u 17:45 - pre 243 meseci
Je l podržava serijalizaciju i kako se tada ponaša? Na primer na mreži objekata (jedni sadrže reference ka drugima i tako celo stablo).
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.beotel.net

Sajt: localhost


+5 Profil

icon Re: PHP5... Funkcija vraca objekat22.04.2004. u 04:13 - pre 243 meseci
// prvo da se ispravim/dopunim. izgleda da je od bete4 za kloniranje ubačena nova ključna reč: $newObj = clone $oldObj;

naravno da podržava serializaciju, i naravno da podržava reference u serializovanoj mreži objekata.

u prvim alfama petice je valjda bilo problema sa ciklusima (rekurzivnim referenciranjem), sada i to radi..

našao sam samo jedan problem sa referenciranjem na početni serijalizovani objekat (u beti3, nisam još stigao da se igram za RC).

naime, kada imamo rekurziju posle već prvog nivoa, npr $x->a = $x; to radi kako se i očekuje. ali kada imamo recimo ovakav kod:

Code:

    class Alpha {
        var $a;
    }

    class Beta {
        var $b;
    }

    $x = new Alpha();
    $x->a = new Beta();
    $x->a->b = $x;
    $y = unserialize(serialize($x));
    var_dump($x, $y);


za sve koji razumeju problematiku, rezultat nije baš očekivan:

Code:

object(alpha)#1 (1) {
  ["a"]=>
  object(beta)#2 (1) {
    ["b"]=>
    object(alpha)#1 (1) {
      ["a"]=>
      object(beta)#2 (1) {
        ["b"]=>
        *RECURSION*
      }
    }
  }
}
object(alpha)#3 (1) {
  ["a"]=>
  &object(beta)#4 (1) {
    ["b"]=>
    object(alpha)#5 (1) {
      ["a"]=>
      &object(beta)#4 (1) {
        ["b"]=>
        object(alpha)#5 (1) {
          ["a"]=>
          *RECURSION*
        }
      }
    }
  }
}


po referencama objekata (ID brojevi posle imena klasa, npr #3), vidi se da $y->a->b nije (rekurzivna) referenca na $y, već je $y->a->b->a referenca na $y->a..

 
Odgovor na temu

[es] :: PHP :: PHP5... Funkcija vraca objekat

[ Pregleda: 3097 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.