Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Równoważność konstruktorów w PHP
Forum PHP.pl > Forum > PHP
trol
Witam,
chwilkę temu trafiłem na dziwną w/g mnie sytuację. Do tej pory myślałem, że notacja:
  1. class Root {
  2. function __construct(){
  3. echo "Root class";
  4. }
  5. }

jest zawsze równa
  1. class Root {
  2. function Root(){
  3. echo "Root class";
  4. }
  5. }


Jednak, ku mojemu zaskoczeniu tak nie jest, ponieważ kod:
  1. class Root {
  2. function Root(){
  3. echo "Root class";
  4. }
  5. }
  6.  
  7. class Child extends Root {
  8. function Child($zmienna){
  9. parent::Root();
  10. echo "<br/>mam jeszcze zmienna ".$zmienna;
  11. }
  12. }
  13.  
  14. class Super_child extends Child {
  15.  
  16. function Super_child(){
  17. parent::Child('test');
  18. }
  19. }

działa bez problemów, natomiast poniższego kodu nie można wykonać:
  1. class Root {
  2. function __construct(){
  3. echo "Root class";
  4. }
  5. }
  6.  
  7. class Child extends Root {
  8. function __construct($zmienna){
  9. parent::Root();
  10. echo "<br/>mam jeszcze zmienna ".$zmienna;
  11. }
  12. }
  13.  
  14. class Super_child extends Child {
  15.  
  16. function __construct(){
  17. parent::Child('test');
  18. }
  19. }


Czy mam wobec tego rozumieć, ze dobrym zwyczajem jest pisać klasy z nazwą konstruktora równą nazwie klasy?
nospor
w php4 konstruktorem była funkcja o takiej samej nazwie co klasa.
w php5 konstruktorem jest funkcja o nazwie __construct
i tego sie trzymaj
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.