• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[PHP OOP] Która metoda jest bardziej optymalna?

Object Storage Arubacloud
0 głosów
153 wizyt
pytanie zadane 12 stycznia 2016 w PHP przez No Lime Gaduła (4,540 p.)
Cześć. Zastanawiałem się nad jedną rzeczą przy uzupełnianiu mojej klasy, które rozwiązanie będzie bardziej optymalne? Mianowicie mam klasę 'uzytkownik' w której znajduje się publiczna metoda 'hasRole' mająca na celu sprawdzenie czy użytkownik nie jest np. Administratorem.

Teraz taką metodą również chciałbym użyć w mojej drugiej klasie 'web' w warunku IF który sprawdza kto aktualnie ogląda daną stronę i załącza odpowiedni wygląd (dla niezalogowanego usera, dla zalogowanego usera, i dla zalogowanego admina). Jak najlepiej i najbardziej optymalnie byłoby "przejąć" metodę hasRole.

1. Użyć extends i odziedziczyć wszystko po klasie 'uzytkownik'?

2. Przepisać metodę 'hasRole' jako traits i użyć jej w klasie 'web'?

3. Czy zadeklarować funkcję 'hasRole' jako statyczną?

2 odpowiedzi

+2 głosów
odpowiedź 12 stycznia 2016 przez Comandeer Guru (601,930 p.)

Przekazać obiekt usera jako zależność i wywołać hasRole z jego kontekstu.

+1 głos
odpowiedź 12 stycznia 2016 przez event15 Szeryf (93,790 p.)
Trzy sposoby, które podałeś nie są idealne. Traits jest często uznawany jako przykład inwalidy w kodzie, o czym ostatnio była ciekawa dyskusja na PHPersach.

Static nie jest dobrym rozwiązaniem, ponieważ hasRole() stanie się globalem, co również nie jest takie dobre - oczywiście można rozważać czy w tym konkretnie przypadku nie narobi żadnych szkód czy nie stworzy podwalin do ich narobienia. Jednak ja zwykle unikam statycznych, chyba, że używam czegoś takiego jak Named Constructors, które w miarę elegancki sposób załatwia sprawę braku wielu konstruktorów w PHP.

Zamiast extends lepiej implementować coś, lub tak, jak @Comandeer napisał - wykorzystać zależność. No i radziłbym Ci jego rozwiązanie, tylko przetraw dokładnie to, co napisał ;)
komentarz 12 stycznia 2016 przez Comandeer Guru (601,930 p.)
A mógłbyś przybliżyć dokładniej czemu traits są uznawane za niewłaściwe?
komentarz 12 stycznia 2016 przez Comandeer Guru (601,930 p.)
Aha, czyli jest inwalidą, bo ktoś tak stwierdził i tak jest, amen…

W sumie – niepotrzebnie pytałem ;)
komentarz 12 stycznia 2016 przez event15 Szeryf (93,790 p.)
Dałem link, do całej dyskusji. Można tam znaleźć opinie ludzi którzy są "za" i "przeciw". Są też argumenty, których nie będę tutaj przeklepywać.

Nie powiedziałem, że amen, napisałem, "często jest uważany" co != jest.
komentarz 12 stycznia 2016 przez Comandeer Guru (601,930 p.)
Nie odnosiłem się do Ciebie, raczej do samego zjawiska.

 Natomiast "dyskusje na PHPers" to zwykle teatr jednego aktora. Tym razem też nie zawiódł ;) Wgl odnoszę wrażenie, że PHPers to grupa dość dogmatyczna i – nie bójmy się tego powiedzieć! – beton OOP.

No bo, serio, kto zadaje pytanie typu: "Wiem, że szambo to bagno, ale przekonajcie mnie, że tak nie jest" zamiast "W sumie to mnie interesuje do czego sensownego można wykorzystać szambo". Pierwsze pytanie z góry przekreśla merytoryczną dyskusję.
komentarz 12 stycznia 2016 przez writen Nałogowiec (29,060 p.)
Ja zauważyłem, że grupa PHPers to jakieś kółko miłośników Symfony.
komentarz 12 stycznia 2016 przez Comandeer Guru (601,930 p.)
Raczej: hejterów Laravela ;)

PHPers to taki Wykop w świecie PHP – wiadomo z góry co się usłyszy.

Podobne pytania

0 głosów
2 odpowiedzi 205 wizyt
0 głosów
2 odpowiedzi 189 wizyt

92,615 zapytań

141,465 odpowiedzi

319,783 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...