Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Helper functions / funkcje globalne w OOP
Brick
post 29.10.2017, 11:20:17
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 9
Dołączył: 16.02.2004
Skąd: Kraków

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


Czy używacie funkcji własnych funkcji globalnych wewnątrz klas? Chodzi mi o typowe funkcjie pomocnicze (helper functions), które dokonują jakiś obliczeń czy robią transformacje na ciągach znaków. Są małe, ogólne i zupełnie niezwiązane z logiką biznesową czy modułami programu.
Minusem tych funkcji jest to że uniemożliwiają testowanie (mockowanie) klas podobnie jak funkcje statyczne. (Jest jakieś dobry polski zamiennik na "mock")?
Plusem jest to, że są zawsze dostępne - nie wymagają tworzenia obiektu i przekazywania za pomocą dependency injection.

Jak rozwiązujecie ten problem?
Bez funkcji globalnych tylko zawsze jako metody przypisane do konkretnej klasy?
Czy może jednak funkcje globalne ale tylko w projektach dla których nie są wykonywane testy jednostkowe?


--------------------
Wszystko należy robić najprościej jak się da, ale nie prościej
Albert Einstein
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post 30.10.2017, 09:59:29
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Cytat
Czy używacie funkcji własnych funkcji globalnych wewnątrz klas?


Nie, bo to zła praktyka. Różnego rodzaju "utilsy" są pogrupowane w serwisach wg ich przeznaczenia (np. service/tool/StringService.php) i "wstrzykiwane" do odpowiedniego kontekstu. Przy czym część funkcji jest dostępna defaultowo (np. $this->logger w kontekście całej aplikacji) a inne są "na życzenie".
Oczywiście dużo łatwiej jest użyć czegoś wprost, niż implementować jako zależność, ale to pozorna oszczędność bo tworzymy w ten sposób różne ukryte zależności które ciężko jest kontrolować, powstają różne dziwne błędy i tak dalej.
Go to the top of the page
+Quote Post

Posty w temacie


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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 23:52