Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z kopiowaniem klasy
Forum PHP.pl > Forum > PHP
Teoria
  1. <?php
  2. class klasa
  3. {
  4. var $pole1;
  5. var $pole2;
  6. var $pole3;
  7. var $pole4;
  8. }
  9. $wojtek=new klasa();
  10. $wojtek->pole1='a';
  11. $wojtek->pole2='b';
  12. $wojtek->pole3='c';
  13. $wojtek->pole4='d';
  14.  
  15. $kopia=$wojtek; # kopiujemy.... CHYBA
  16.  
  17. ### OBIE ZMIENNE SA TAKIE SAME
  18. print_r($wojtek);
  19. echo "<br /><br />";
  20. print_r($kopia);
  21. echo "<br /><br />";
  22.  
  23. ### ZMIENIAMY WARTOSC KOPII
  24. $kopia->pole1='xxxx';
  25.  
  26. print_r($wojtek);
  27. echo "<br /><br />";
  28. print_r($kopia);
  29. echo "<br /><br />";
  30. ?>


i pytnie: co w linice 26 i 28 zostanie wydrukowane?

Odpowiedź: różnie!!!! blinksmiley.gif sciana.gif

WARIANT 1 na localhoscie:
klasa Object ( [pole1] => a [pole2] => b [pole3] => c [pole4] => d )

klasa Object ( [pole1] => xxxx [pole2] => b [pole3] => c [pole4] => d )


WARIANT 2 na serwerze:
klasa Object ( [pole1] => xxxx [pole2] => b [pole3] => c [pole4] => d )

klasa Object ( [pole1] => xxxx [pole2] => b [pole3] => c [pole4] => d )

Prawdziwe pytanie:
a ) Dlaczego tak się dzieje?
b ) jak 'skopiować' w takim razie tą zmienną, by 'wyrzucał' wariant 1?
mike
Jakie wersje PHP masz na localhost i na serwerze?
Teoria
trochę mi głupio, bo akurat po napisaniu posta znalazłem odpowiedź na to... (a męczyłem się z tym pół dnia). Ale myślę że to będzie cenna informacja dla niektórych:

W PHP 4:
$obiekt1=$obiekt2 -> kopiuje
$obiekt1=&$obiekt2 -> tworzy referencje

W PHP 5:
$obiekt1=$obiekt2 -> tworzy referencje
$obiekt=clone($obiekt2) -> kopiuje

ALE... w manualu nie ma funkcji clone() exclamation.gif!!
mike
Cytat(Teoria @ 21.08.2007, 17:28:37 ) *
ALE... w manualu nie ma funkcji clone() exclamation.gif!!
Zabrzmiało jakbyś byl tego pewien tongue.gif
Classes and Objects (PHP 5) :: Object cloning


W sumie clone() nie ma. Jest __clone()
Teoria
hm... no to jestem o coś mądrzejszy smile.gif

Dzięki Mike za zainteresowanie.


---
Jo łelkom smile.gif
~mike
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.