Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [OOP] Klasa tylko z funkcjami statycznymi
MiChaSSs
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

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


Hej,
Ostatnio zacząłem przepisywać skrypt na OOP i mam kilka funkcji (nie powiązanych ze sobą), które nie nadają się do standardowej klasy (gdzie tworzy się instancje obiektu) i tak sobie myslałem, czy byłoby prawidłowo jeślibym utworzył klasę (np. Tools czy Utilities) w której trzymałbym przydatne statyczne metody? Czyli stworzyłbym klasę, która nigdy nie będzie miała obiektu a będzie istniała tylko po to, żeby być kontenerem na statyczne metody. Coś na tej zasadzie:

  1. class Tools
  2. {
  3. public static function Metoda1()
  4. {
  5.  
  6. }
  7.  
  8. public static function Metoda2()
  9. {
  10.  
  11. }
  12. }
  13.  
  14. // Wywołanie metod
  15. Tools::Metoda1();
  16. Tools::Metoda2();


I teraz mam pytanie do Was ... ma to jakiś sens? (IMG:style_emoticons/default/biggrin.gif) Jakie jest prawidłowe podejście? Czy funkcje powinny "luzem" w kodzie leżeć a ja nie powinienem za wszelką cenę opakowywać wszystkiego w OOP? Pozdrawiam MD

Ten post edytował MiChaSSs 28.11.2010, 22:45:51
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aart3k
post
Post #2





Grupa: Zarejestrowani
Postów: 72
Pomógł: 10
Dołączył: 2.02.2008
Skąd: Kraków

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


nie wiem czy z abstracta można wywoływać statyczne.

@thek: Kohany nie znam, wiem zaś że rozwiązanie które opisałeś świetnie się sprawdza, niezależnie od stosowanego frameworka.
U siebie mam parę właśnie tego pokroju klas, niektóre mające tylko jedną funkcję, nie mniej jednak chodzi o to żeby były logicznie spójne np. mój MM_Geolocator ma tylko statyczną getCountryByIp.
Go to the top of the page
+Quote Post
MiChaSSs
post
Post #3





Grupa: Zarejestrowani
Postów: 65
Pomógł: 4
Dołączył: 6.09.2007

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


Cytat(aart3k @ 1.12.2010, 18:52:28 ) *
nie wiem czy z abstracta można wywoływać statyczne.


Abstract służy właśnie do tego, żeby nie trzeba było mieć instancji obiektu, aczkolwiek jak słusznie zauważył kolega mike nie oznacza to, że nie można po tym dziedziczyć. Dziękuję za Waszą pomoc, pozdrawiam MD
Go to the top of the page
+Quote Post
manro
post
Post #4





Grupa: Zarejestrowani
Postów: 9
Pomógł: 3
Dołączył: 25.10.2006

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


Cytat(MiChaSSs @ 1.12.2010, 23:37:23 ) *
Abstract służy właśnie do tego, żeby nie trzeba było mieć instancji obiektu, aczkolwiek jak słusznie zauważył kolega mike nie oznacza to, że nie można po tym dziedziczyć. Dziękuję za Waszą pomoc, pozdrawiam MD

Abstract służy do tego żeby nie można było bezpośrednio z tej klasy stworzyć instancji obiektu, a nie do tego żeby nie trzeba było mieć instancji obiektu, jak sama nazwa wskazuje określa to abstrakcyjny model, którego instancja fizyczna nie istnieje. Pozwala to natomiast tworzenie konkretnych instancji obiektów danego typu np:

abstract class Animal {}
class Dog extend Animal {}
class Cat extend Animal {}
Go to the top of the page
+Quote Post

Posty w temacie
- MiChaSSs   [OOP] Klasa tylko z funkcjami statycznymi   28.11.2010, 22:45:07
- - skowron-line   Helpery to klasy ze statycznymi metodami możesz zr...   28.11.2010, 22:49:07
- - Crozin   Takie konstrukcje są pozbawione sensu z punktu wid...   28.11.2010, 23:02:49
- - MiChaSSs   A istnieje jakis standard, który by definiował co ...   29.11.2010, 18:44:08
- - mike   Cytat(skowron-line @ 28.11.2010, 22...   30.11.2010, 09:44:40
|- - skowron-line   Cytat(mike @ 30.11.2010, 09:44:40 ) A...   30.11.2010, 10:02:49
- - marcio   CytatTak mi się napisało, poza tym helpery nie mus...   30.11.2010, 12:35:10
- - Zyx   Z funkcjami jest taki problem, że nie podlegają au...   30.11.2010, 22:58:02
- - aart3k   Reasumując: biorąc pod uwagę ograniczenia PHP (wła...   1.12.2010, 12:43:34
- - Quadina   Zgodzę się z użytkownikiem aart3k na prawie całej ...   1.12.2010, 13:56:09
- - Crozin   Hmmm... faktycznie brak autoloadera to już poważna...   1.12.2010, 14:36:57
- - aart3k   @Crozin: you missed the point, chodziło o klasę To...   1.12.2010, 15:27:22
- - athabus   Ja mam cały zbiór klas pomocniczych. Nazwałem go C...   1.12.2010, 15:51:43
- - thek   Może więc aart3k chodzi Ci o system helperów z Koh...   1.12.2010, 16:04:51
- - MiChaSSs   Okej, czyli poprawiając mój pierwszy, aby upewnić ...   1.12.2010, 17:36:28
- - aart3k   nie wiem czy z abstracta można wywoływać statyczne...   1.12.2010, 18:52:28
|- - mike   Cytat(MiChaSSs @ 1.12.2010, 17:36:28 ...   1.12.2010, 21:18:08
|- - MiChaSSs   Cytat(aart3k @ 1.12.2010, 18:52:28 ) ...   1.12.2010, 22:37:23
|- - manro   Cytat(MiChaSSs @ 1.12.2010, 23:37:23 ...   2.12.2010, 16:55:45
- - athabus   Dokładnie jak kolega wyżej pisze. Twoje zastosowan...   2.12.2010, 17:04:01
|- - MiChaSSs   Cytat(manro @ 2.12.2010, 16:55:45 ) A...   2.12.2010, 18:23:28
- - smentek   Cytat(MiChaSSs @ 2.12.2010, 19:23:28 ...   10.12.2010, 17:27:26
- - mike   Cytat(smentek @ 10.12.2010, 17:27:26 ...   13.12.2010, 08:54:30


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: 26.12.2025 - 13:38