Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Metody statyczne..., czy one spełniają swoją funkcję?
Mejdej
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 15.01.2010

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


Cześć,

dzisiaj odkryłem coś co mnie bardzo zdziwiło. Czy to normalne, że każdą metodę publiczną można odpalić jak statyczną mimo, że nie jest ona statyczna? Bardzo mnie to zdziwiło.

Oto przykład tego o czym mówię. Skrypt zwraca dwukrotnie napis "cos tam...", a według mnie nie powinien.

  1. <?php
  2. class A
  3. {
  4. public function cosu()
  5. {
  6. print 'cos tam...';
  7. }
  8.  
  9. }
  10.  
  11. class B
  12. {
  13. public function __construct()
  14. {
  15.  
  16. // tak nie powinno dzialac
  17. A::cosu();
  18.  
  19. // A to powinna być jedyna dopuszczalan metoda
  20. $zmm = new A();
  21. $zmm -> cosu();
  22.  
  23. }
  24. }
  25.  
  26. $zmienna = new B();
  27. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Przyjrzyj sie temu kawałkowi kodu z a i b (IMG:style_emoticons/default/smile.gif)
  1. $a = new a; //stworzenie obiektu a... proste...
  2. $a->show(); //tu jest tylko pozornie "cyrk"... na obiekcie $a wykonaj metodę show(), czyli wywołanie metody show2() klasy b, która wyświetla własność 'name' tego obiektu.
A jakie jest 'name' obiektu klasy a? Ano właśnie 'a' (IMG:style_emoticons/default/smile.gif) Jaki jest więc de facto efekt? Jednoznaczność z napisaniem w klasie a:
  1. public function show() {
  2. $this->name;
  3. }
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 20:06