Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dziedziczenie OOP PHP4 w PHP5
kreator
post 18.08.2008, 22:02:46
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 3
Dołączył: 19.10.2007
Skąd: Gdańsk

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


Witam.
Mam taki problem. Mam klasę napisaną w PHP4 - konstruktor ma taką samą nazwę jak klasa.
Jeżeli chcę dziedziczyć konstruktor z klasy napisanej w PHP4 do klasy napisanej w PHP5, to w jaki sposób to zrobić?

parent::__construct();

czy parent::nazwa_klasy();

Mam nadzieję że w miarę jasno napisałem smile.gif
Go to the top of the page
+Quote Post
starach
post 18.08.2008, 22:33:53
Post #2





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Nie do końca jestem pewien że o to ci chodzi...
Ale możesz sprawdzać czy metoda danego obiektu istnieje: http://pl.php.net/method_exists
Go to the top of the page
+Quote Post
dr_bonzo
post 18.08.2008, 23:05:35
Post #3





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

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


?
  1. <?php
  2.  
  3. class Klass_V4
  4. {
  5. function Klass_V4($txt)
  6. {
  7. echo "TXT = " . $txt . "<br />";
  8. }
  9. }
  10.  
  11. class Klass_V5_z_konstruktorem extends Klass_V4
  12. {
  13. public function __construct($txt)
  14. {
  15. parent::__construct($txt);// i wszystko jasne
  16. }
  17. }
  18.  
  19. class Klass_V5_bez_konstruktora extends Klass_V4
  20. {
  21. // wywolany zostanie konstruktor klasy bazowej
  22. }
  23.  
  24.  
  25. new Klass_V5_bez_konstruktora("BEZ konstruktora");
  26. new Klass_V5_z_konstruktorem( "Z konstruktorem");
  27. ?>


wynik
Kod
TXT = BEZ konstruktora
TXT = Z konstruktorem


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
mike
post 18.08.2008, 23:06:33
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(kreator @ 18.08.2008, 23:02:46 ) *
Jeżeli chcę dziedziczyć konstruktor z klasy napisanej w PHP4 do klasy napisanej w PHP5, to w jaki sposób to zrobić?

parent::__construct();

czy parent::nazwa_klasy();
Brak samodzielności ludzi mnie przeraża. A jakby odpowiedź nie padła kilka dni to siedziałbyś i czekał? Takie rzeczy sprawdza się samemu.
Ale jeśli nie znasz pojęcia empiryzm to lecimy.

Po pierwsze musisz wiedzieć, że PHP5 nadal wykonuje funkcję o nazwie klasy jako konstruktor. Ale tylko wtedy kiedy funkcja __construct() nie jest zdefiniowana. Ta wiedza Ci się przyda. A na potwierdzenie przykład:
  1. <?php
  2.  
  3. class KlasaPHP5 {
  4.  
  5. public function KlasaPHP5() {
  6. echo "Konstruktor (po staremu) KlasaPHP5\n";
  7. }
  8. }
  9.  
  10. new KlasaPHP5();
  11.  
  12. ?>
Wynik:
Cytat
Konstruktor (po staremu) KlasaPHP5

A teraz Twoja sytuacja:
  1. <?php
  2.  
  3. class KlasaPHP4 {
  4.  
  5. function KlasaPHP4() {
  6. echo "Konstruktor KlasaPHP4\n";
  7. }
  8. }
  9.  
  10. class KlasaPHP5 extends KlasaPHP4 {
  11.  
  12. public function __construct() {
  13. // cóż tu wpisać, co?
  14. }
  15. }
  16.  
  17. ?>
To teraz na podstawie wiedzy zdobytej w poprzednim przykładzie wiesz, że kod ma wyglądać tak:
  1. <?php
  2.  
  3. class KlasaPHP4 {
  4.  
  5. function KlasaPHP4() {
  6. echo "Konstruktor KlasaPHP4\n";
  7. }
  8. }
  9.  
  10. class KlasaPHP5 extends KlasaPHP4 {
  11.  
  12. public function __construct() {
  13. parent::__construct();
  14. echo "Konstruktor KlasaPHP5\n";
  15. }
  16.  
  17. public function KlasaPHP5() {
  18. echo "Konstruktor (po staremu) KlasaPHP5\n";
  19. }
  20. }
  21.  
  22. new KlasaPHP5();
  23.  
  24. ?>
Wynik:
Cytat
Konstruktor KlasaPHP4
Konstruktor KlasaPHP5


Ale to samo mogłeś zrobić sam tongue.gif
Go to the top of the page
+Quote Post
kreator
post 19.08.2008, 17:03:40
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 3
Dołączył: 19.10.2007
Skąd: Gdańsk

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


Dzięki za wyjaśnienie. smile.gif
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 Wersja Lo-Fi Aktualny czas: 24.07.2025 - 20:36