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
hind
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 24
Dołączył: 30.03.2009
Skąd: Rokitno Szlacheckie

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


Żeby było ciekawiej metody statyczne wywołane w obiekcie mają dostęp do $this z wywoływanego obiektu.

Kod
<?php

class a {

    public $name = 'a';

    public function show() {
        b::show2();
    }

}

class b {

    public $name = 'b';

    public function show2() {
        echo $this->name;
    }

}

$a = new a;
$a->show();
// wyświetla 'a'
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: 6.10.2025 - 09:52