Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Krótkie pytanie dotyczące metod statycznych
jajcarzd1
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

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


Witam

Mam takie pytanie, bo spotkałem się w jakiejś dokumentacji że metod statycznych nie można wywoływać mając utworzony obiekt klasy czyli

  1. <?php
  2. class klasa {
  3.  
  4.  public static function statyczna() {
  5.  
  6.   echo 'funkcja statyczna';    
  7.    }
  8.  
  9.    public function niestatyczna() {
  10.    
  11.     echo 'funkcja niestatyczna';
  12.  
  13.     }
  14.  
  15. }
  16.  
  17. klasa::statyczna ///wywołanie poprawne
  18.  
  19. $klasa = new klasa();
  20. $klasa->statyczna //niby niepoprawne ale normalnie mi to funkcjonuje
  21. ?>


Poza tym wywołanie metody niestatycznej w taki sposó też działa (choć jest komunikat E_STRICT)

  1. <?php
  2. klasa::niestatyczna;
  3. ?>


Poza tym self:: służy niby do wywoływania metod statycznych ale jak zrobie takie wywołanie

  1. <?php
  2. class klasa {
  3.  
  4.  public static function statyczna() {
  5.  
  6.   echo 'funkcja statyczna';  
  7.    self::niestatyczna;
  8.    }
  9.  
  10.    public function niestatyczna() {
  11.    
  12.     echo 'funkcja niestatyczna';
  13.  
  14.     }
  15.  
  16. }
  17.  
  18. klasa::statyczna; //działa wewnątrz odwołanie self do niestatycznej metody
  19. ?>


gdzie self sięodwołuje do metody niestatycznej to też działa.

Więc jak to jest z tymi metodami bo z tego co widzę to niezależnie czy jest ona static czy nie to można odwołać się do niej przez :: oraz -> (ewentualny komunikat E_STRICT). Oczywiście zakładamy że odrzucam wszędzie zastosowanie $this (żeby poprawnie odwołać się za pomocą :: )

Ten post edytował jajcarzd1 23.12.2008, 13:18:38
Go to the top of the page
+Quote Post

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: 22.08.2025 - 19:56