Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Klasa statyczna
maviozo
post
Post #1





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Poszukiwałem już czegoś, co może mnie nakierować na sprawę i niejednokrotnie trafiłem na dyskusje dotyczące 'sporu' klasa statyczna<->singleton.
Natomiast nigdzie nie znalazłem oczywistej odpowiedzi na pytanie czym jest klasa statyczna. Na podstawie własnych wniosków wydaje mi się, że klasa statyczna to skrót myślowy, polegający na utworzeniu klasy, której wszystkie metody i zmienne są statyczne (czyli praktycznie wszystko, do czego chcę mieć dostęp przez Klasa::xx, Klasa::xx() musi być poprzedzona słówkiem static) Przykładem takiej klasy może być PDO, jednak nie dotarłem do źródła, na podstawie którego sam doszedłbym do tego, czego mi trzeba winksmiley.jpg W zasadzie pytanie ogranicza się do: czy jest bardziej elegancka metoda zrobienia takiej klasy poza dodawaniem static przy każdej metodzie/zmiennej? (oczywiście poza zmiennymi tymczasowymi w metodach)

Do czego jest mi to potrzebne? Tworzę sobie na przykład dwie klasy, które będą zawsze jednoznaczne (nie będzie dwóch obiektów tego typu) i chcę by obie nawzajem zawsze się widziały. Można używać $GLOBALS, albo global, ale wydaje mi się to ułomne. Można nie stosować klas i nazwy funkcji poprzedzać dodatkowymi nazwami i korzystać z nich w globalnym zasięgu, ale to jest dość prymitywne.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




PDO nie jest klasą statyczną. Co do pojęcia klasy statycznej masz rację.

http://forum.php.pl/index.php?showtopic=122586&hl=


--------------------
Go to the top of the page
+Quote Post
maviozo
post
Post #3





Grupa: Zarejestrowani
Postów: 197
Pomógł: 24
Dołączył: 22.11.2010

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


Racja, z tym PDO oczywiście zagalopowałem się. Poza np. PDO::ATTR_ERRMODE i innymi i jakoś tak mi się utrwaliło w głowie i zaćmiło. Tyle, że akurat to trochę co innego ;
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Klasa statyczna to klasa statyczna, a nie klasa z wszystkimi metodami statycznymi. PHP klas statyczny nie obsługuje.

Przykład z Javy:
  1. public class Main {
  2. public static void main(String[] args) {
  3. OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
  4. innerClass.doSth();
  5. }
  6. }
  7.  
  8. class OuterClass {
  9. public static class InnerClass {
  10. void doSth() {
  11. System.out.println("OuterClass.InnerClass.doSth()");
  12. }
  13. }
  14. }


Edit:
Cytat
Poza np. PDO::ATTR_ERRMODE i innymi i jakoś tak mi się utrwaliło w głowie i zaćmiło.
To jest stała, a stałe mają to do siebie, że są statyczne:
  1. class PDO {
  2. const ATTR_ERRMODE = 4;
  3. }


Ten post edytował Crozin 7.01.2011, 14:02:17
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: 21.08.2025 - 00:07