Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zwracanie innego obiektu przez konstruktor.
Forum PHP.pl > Forum > PHP > Object-oriented programming
crook
Czy istnieje jakaś możliwość w PHP5, aby konstruktor zwrócił inny obiekt? W PHP4 można było:
  1. <?php
  2.  class Foo
  3.  {
  4. function Foo()
  5. {
  6.  $this = new Foobar;
  7. }
  8.  }
  9. ?>

W PHP5 to nie działa.
dr_bonzo
Nie. A po co?
ActivePlayer
  1. <?php
  2.  
  3.  class Foo
  4.  {
  5. static function factory()
  6. {
  7. return new Foobar();
  8. }
  9.  }
  10.  
  11.  class Foobar{
  12. public $asd;
  13.  
  14. function __construct(){
  15. echo 2;
  16. return $this;
  17. }
  18.  }
  19.  
  20.  $asd = Foo::factory();
  21.  var_dump($asd);
  22.  
  23. ?>
hwao
Jezeli jakis obietk "ma zwracac pare obiektow" to mozesz uzyc monitora

http://forum.php.pl/index.php?showtopic=42570
splatch
Nie ma technicznej możliwości w php (i podejżewam że w wielu innych jezykach również) by konstruktor coś zwracał. Dlaczego? Ponieważ konstruktor to specyficzna metoda tworzona w chwili inicjalizacji obiektu. Nie ma ona wpływu na jego tworzenie.
Gdy w php wykonasz $x = new DOMXML(); operator new zwraca instancję klasy nie biorąc pod uwagę konstruktora. Konstruktor jest wykonywany po to byś mógł przekazać w chwili tworzenia argumenty przydatne przy inicjalizacji obiektu.
Nie muszę wspominać, że jest to niezgodne z regułami OOP. Ponadto zapis, który wcześniej przedstawiłeś to jest podwujne new - czyli stworzenie drugiej instancji klasy w niej samej..
Niezależnei co by to miało być i czemu służyć możesz to rozwiązać ładniej. smile.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.