Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Równoważność konstruktorów w PHP, różnica między __construct() a Klasa{ func. Klasa() }
trol
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 25.04.2009

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


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





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




w php4 konstruktorem była funkcja o takiej samej nazwie co klasa.
w php5 konstruktorem jest funkcja o nazwie __construct
i tego sie trzymaj


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 19.08.2025 - 07:18