Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zwracanie innego obiektu przez konstruktor.
crook
post
Post #1





Grupa: Nieautoryzowani
Postów: 2
Pomógł: 0
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Nie. A po co?


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
ActivePlayer
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 1 224
Pomógł: 40
Dołączył: 6.07.2004
Skąd: Wuppertal

Ostrzeżenie: (0%)
-----


  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. ?>
Go to the top of the page
+Quote Post
hwao
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Jezeli jakis obietk "ma zwracac pare obiektow" to mozesz uzyc monitora

http://forum.php.pl/index.php?showtopic=42570
Go to the top of the page
+Quote Post
splatch
post
Post #5





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 04:17