Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> metoda statyczna o co chodzi? jak i gdzie implementować?
atomp3
post
Post #1





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

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


Jak w temacie może mi ktoś wyjaśnić na jakimś prostym przykładzie i czy warto implementować do prostego CMSa?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


  1. <?php
  2. class Klasa
  3. {
  4. public static function metodaStatyczna(){}
  5.  
  6. public function metodaZwykla(){}
  7. }
  8.  
  9. $k = new Klasa();
  10. $k->metodaZwykla(); // mozna ja wywolac tylko na obiekcie
  11.  
  12.  
  13. Klasa::metodaStatyczna(); // wywoluje sie ja na klasie
  14. ?>



Cytat
czy warto implementować do prostego CMSa?

Zle zadane pytanie. To zalezy co i jak implementujesz, czy da sie to zrobic bez metody statycznej itp.
Go to the top of the page
+Quote Post
atomp3
post
Post #3





Grupa: Zarejestrowani
Postów: 126
Pomógł: 1
Dołączył: 31.03.2006

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


sorry ale jestem laikiem i nie widze za bardzo zastosowania i roznicy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) moze jakis przyklad?
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




dr_bonzo ma rację - ma to znaczenie w samym akcie programowania a nie pisania CMS'a.
Przykład? Proszę - uproszczony

  1. <?php
  2. class DB{
  3.  
  4. static function getInstance($dsn){ //zalozmy, ze oczekujemy po prostu nazwy 
  5.  return new $dsn();
  6. }
  7. }
  8.  
  9. class mysql extends DB{}
  10. class pgsql extends DB{}
  11.  
  12. //i teraz
  13.  
  14. $db=Db::getInstance('mysql');
  15. $db->query();
  16. ?>


I już masz przykład zastosowania metody statycznej do pozyskania sterownika dla bazy danych na podstawie stringu.
Oczywiście powinno to być troszkę bardziej skomplikowane (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)

Pozdrawiam.

Ten post edytował Cysiaczek 26.05.2007, 15:29:43
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Metody statyczne można wywoływać bezpośrednio z klasy, bez tworzenia jej egzemplarza.
  1. <?php
  2. class Foo
  3. {
  4. public static Bar() {
  5. /*kod metody*/
  6. }
  7. }
  8. // wywolanie metody statyczniej
  9. Foo::Bar();
  10. // niepoprwany przyklad
  11. $obj = new Foo();
  12. $obj->Bar(); // BLAD!
  13. ?>


Statyczne metody stosuje się wtedy, jeśli chce się ograniczyć ilość instancji danego obiektu lub jeśli tworzysz klasę zawierającą luźno powiązane metody, tzw "helpery".

Najlepszym przykładem zastosowania metody statycznej jest wzorzec projektowy Singleton.
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: 25.12.2025 - 11:22