Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klonowanie obiektu
Forum PHP.pl > Forum > PHP > Object-oriented programming
Yorki
Czy jest możliwość sklonowania obiektu który jest referencją innego?

Czy php domyślnie zwraca referencję? Czy jest sens narzucenia mu typu zwracanego (w tym wypadku ref)?

  1. $b = clone Engine::$builds->fetchById( ISecur($get->id, true) );
  2. $b->someStuff();


Metoda klasy Builds odpowiedzialna za zwrócenie referencji do obiektu:
  1. public function &fetchById($bid)
  2. {
  3. if($this->count() > 0){
  4. foreach($this as $b)
  5. if ($b->id == $bid){
  6. return $b;
  7. }
  8. } else return NULL;
  9. }


Otóż co się dzieje.. po wykonaniu metody lub zmodyfikowaniu właściwości obiektu $build następuje zmiana w tablicy obiektów $builds co jest akcją przeze mnie niepożądaną. Chcę kopię obiektu, a nie referencję. Dlaczego pomimo użycia clone zwraca mi referencję? Czy dlatego że metoda ma &?

Dodam, że w większości przypadków potrzebna mi referencja do danego obiektu zwracana przez tę metodę, ale w tej sytuacji nie może być to referencja.




rocktech.pl
Witam.

Metoda magiczna __clone.

  1. ..
  2. function __clone()
  3. {
  4. //Wymuś kopiowanie obiektu inaczej będzie wskazywać na ten sam obiekt
  5. $this->object1 = clone $this->object1;
  6. }
  7. ..
Yorki
Temat do zamknięcia wink.gif
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.