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





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(skowron-line @ 28.11.2010, 22:49:07 ) *
Helpery to klasy ze statycznymi metodami możesz zrobić taką klasę tylko z jedną metodą.
A niby dlaczego tylko z jedną metodą? Poza "helperami" masz też klasy narzędziowe. Jedna metoda na klasę to bezmyślność.
Cytat(Crozin @ 28.11.2010, 23:02:49 ) *
Takie konstrukcje są pozbawione sensu z punktu widzenia OOP. Lepiej utwórz sobie odpowiednią przestrzeń nazw, a w niej zwykłe funkcje.
Ale jednak nie da się ich uniknąć kiedy piszesz aplikację w duchu OOP.
Klasy narzędziowe to normalna sprawa, czasem są potrzebne i nie należy ich za wszelką cenę unikać.

Cytat(MiChaSSs @ 29.11.2010, 18:44:08 ) *
A istnieje jakis standard, który by definiował co w takim przypadku zrobić?
Klasa narzędziowa to dobre wyjście, jeśli tego faktycznie potrzebujesz. Jedyne co możesz zrobić dodatkowo to zamknąć ją na rozszerzanie i zablokować możliwość tworzenia instancji.
  1. <?php /* już nie pamiętam czy w PHP jest final */ final class Tools {
  2.  
  3. private Tools() {
  4. throw new Exception("IllegelStateException");
  5. }
  6.  
  7. // Jakieś funkcje
  8. }
  9.  
  10. ?>


Ten post edytował mike 30.11.2010, 09:45:38
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: 28.12.2025 - 04:23