Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP4 referencje do obiektu
Forum PHP.pl > Forum > PHP > Object-oriented programming
ersiv
  1. <?php
  2. function dump($var) {
  3. echo '<pre>';
  4. var_dump($var);
  5. echo '</pre>';
  6. }
  7.  
  8. class Engine {
  9. var $page;
  10. function Engine() {}
  11. function setPage() {$this->page = new Page();}
  12. function getPage() {return $this->page;}
  13. function getPageID() {return $this->page->getID();}
  14. }
  15.  
  16. class Page {
  17. var $id;
  18. function Page() {}
  19. function getID() {return $this->id;}
  20. function setID($id) {$this->id = $id;}
  21. }
  22.  
  23. $e = new Engine();
  24. $e->setPage();//dodaje page do engine
  25.  
  26. $p = $e->getPage();//pobieram dodany obiekt page
  27. $p->setID(999);//zmieniajac ID chce aby w Engine tez sie zmienil
  28.  
  29. dump($p->getID());
  30. dump($e->getPageID());
  31. ?>


Coś takiego uruchomione pod PHP5 działa ok, pod PHP4 modyfikując zwrócony obiekt, nie zmienia obiektu Page pobranego z Engine... pod PHP4 nie pisałem, a teraz muszę :/ i nie wiem jak sobie z tym poradzić
Crozin
W PHP5 przypisując instancję objektu do zmiennej tworzona jest na niej instancja, która jest jednocześnie referencją. W PHP4 jest natomast tworzona kopia:
  1. <?
  2.  
  3. $p &= $e->getPage();
  4. ?>
ersiv
Cytat(Crozin @ 19.04.2008, 18:26:26 ) *
W PHP5 przypisując instancję objektu do zmiennej tworzona jest na niej instancja, która jest jednocześnie referencją. W PHP4 jest natomast tworzona kopia:
  1. <?
  2.  
  3. $p &= $e->getPage();
  4. ?>


hmmm... nie działa to u mnie w ten sposób, z dobrej strony '=' dałeś '&' questionmark.gif
wywala mi fatal errora
  1. <?php
  2. $p &= $e->getPage();
  3. ?>

po czymś takim p jest typu int i =0 ...i przez to ten fatal error :/
dr_bonzo
$x &= $y to to samo co $x = $x & $y (binarne AND)

tez nie pamietam php4 tongue.gif


  1. <?php
  2. $p = &$e->getPage();
  3. function &getPage(){
  4.  return &$this->page;
  5. }
  6. ?>

ktores z '&' nie zadzialaja (parse error), tak ze posprawdzaj


edit: znalazlem w koncu: http://pl2.php.net/manual/en/language.references.php
Crozin
Nie mam PHP4 więc sprawdzić nie mam za bardzo jak - ale skoro sam wpadłeś na to, że & może być z złej strony to dlaczego nie spawdziłeś czy =& nie będzie działać? smile.gif

EDIT:
dr_bonzo mnie uprzedił winksmiley.jpg
ersiv
Cytat(Crozin @ 19.04.2008, 18:54:41 ) *
Nie mam PHP4 więc sprawdzić nie mam za bardzo jak - ale skoro sam wpadłeś na to, że & może być z złej strony to dlaczego nie spawdziłeś czy =& nie będzie działać? smile.gif

EDIT:
dr_bonzo mnie uprzedił winksmiley.jpg

wow bez przesady ;P nie uważam się aż za takiego matoła biggrin.gif


Cytat(dr_bonzo @ 19.04.2008, 18:52:36 ) *
$x &= $y to to samo co $x = $x & $y (binarne AND)

tez nie pamietam php4 tongue.gif
  1. <?php
  2. $p = &$e->getPage();
  3. function &getPage(){
  4.  return &$this->page;
  5. }
  6. ?>

ktores z '&' nie zadzialaja (parse error), tak ze posprawdzaj
edit: znalazlem w koncu: http://pl2.php.net/manual/en/language.references.php


dzięki!
  1. <?php
  2. $p = &$e->getPage();
  3. function &getPage(){
  4.  return $this->page;
  5. }
  6. ?>

taka kombinacja działa winksmiley.jpg
trochę szperałem i nie znalazłem wcześniej że w metodzie też trzeba zadeklarować referencję zwraca

dzięki jeszcze raz, za szybką reakcje

pzdr
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.