Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ukryty sens za Laravel Facades
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
właśnie zaczynam naukę Laravela i nie potrafię zrozumieć sensu korzystania ze statycznych fasad wewnątrz tego frameworka.

Fasady korzystają z referencji do obiektów zarejestrowanych wewnątrz kontenera IoC, które istotą jest zmiana kierunku przepływu dependency w aplikacji tak by wszystkie klasy miały na starcie wstrzykiwane zewnętrzne zależności, oraz by klasa w momencie startu była w pełni funkcjonalna. Z drugiej strony korzystanie ze statycznych fasad przywraca ten flow, do stanu gdzie zależności są 'pobierane' przez klasę po stworzeniu.

Oba te rozwiązania korzystają ze wzajemnie wykluczających się praktyk programistycznych, a same fasady odptytujące kontener IoC przypominają mi statyczny rejestr lub service localizator.

Czytając więcej na temat, czemu Laravel robi w ten sposób, znalazłem jedynie artykuł mówiący,że twórcy wybrali to rozwiązanie ze względu na uproszczenie dostępu do API jak i również uproszczeniu testowania aplikacji poprzez możliwość mockowania wspomnianych fasad, co już w tym momencie wydaje mi się złym podejściem w TDD, a także nie mówi nic o konkretnym problemie jakie fasady miałyby rozwiązać.

Może mi ktoś zatem wytłumaczyć, czemu tak odrębne, wręcz niwelujące nawzajem swoje zalety, wzorce są stosowane razem w Laravel?

Ten post edytował Skie 4.01.2015, 22:55:15


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Jedynym ukrytym sensem, jest ten który wymieniłeś, czyli uproszczony dostęp do API. Dlaczego CI czy kohana były tak lubiane? Właśnie przez swoją prostote, singleton jest tam wszędzie, i to jest taki łatwy próg wejścia dla początkujących. Tyle że tam miałeś tylko jedną rzecz do wyboru, w laravel nie musisz korzystać z fasad wcale, bo to wszystko co jest w fasadach, jest dostępne w kontenerze IoC.

Mnie też to początkowo dziwiło, kto przy IoC które wprowadził symfony chciałby korzystać z singletona? Dopiero potem zauważyłem że wcale z niego nie trzeba korzystać, chociaż jest taka możliwość.

Ten post edytował by_ikar 5.01.2015, 12:48:51
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Sensu jako takiego nie ma, ot po prostu ułatwienie. A z drugiej strony z Fasadami i IoC kiepsko sobie radzą IDE z podpowiadaniem składni co skutkuje nauczeniem się co mamy dostępne. No chyba że to tylko ja taka łamaga jestem i nie umiem zmusić Storma do podpowiadania w L5 wink.gif

Go to the top of the page
+Quote Post
by_ikar
post
Post #4





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Aby zmusić phpstorma do fasad, musiałbyś zainstalować odpowiedni plugin, lub pobrać z gitchuba odpowiedni helper (zwykły plik php).

plugin: https://plugins.jetbrains.com/plugin/7532?pr=phpStorm (w repo z poziomu edytora też znajdziesz)
helper: https://gist.github.com/barryvdh/5227822

Nie wiem jak to ma się póki co do L5, bo czekam aż zostanie wydany wink.gif
Go to the top of the page
+Quote Post
Pyton_000
post
Post #5





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


W L4 helper działa wyśmienicie, jednak po wgraniu samego plugina i próbie generowania niestety ale nie zadziała. Półśrodkiem jest wgranie wygenerowanego pliku php do projektu.
Autor tego helpera z tego co widziałem pracuje już nad wersją dla L5.

Co do pluginu dla storma to jakoś nie chciało mi to działać albo ja nie potrafiłem z niego korzystać wink.gif

[Edited]
Właśnie przetestowałem ponownie ten helper i w sumie generuje pliczek php, więc można powiedzieć że działa. Cudo wink.gif
Choć nie wiem czy w L5 jest to aż tak potrzebne mając do dyspozycji Method DI

Ten post edytował Pyton_000 5.01.2015, 13:45:08
Go to the top of the page
+Quote Post
by_ikar
post
Post #6





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Jak na szybkiego coś robisz z użyciem fasad, to może się przydać, ale tak jak mówisz, w L5, to nie ma sensu, a ja sam w sumie na poważnie chcę zacząć dopiero do L5, bo własnie wcześniej jakoś te fasady mi średnio leżały, a kiedy się już do nich powoli przekonywałem, to zobaczyłem co ma być w L4.5 (które później rebrandowali na 5) to się powstrzymałem i stwierdziłem że poczekam, bo niektóre z tych rozwiązań (jak chociażby httpRequests i filtrowania danych) są świetne i tylko czekam aż wyjdzie stable i już coś będę w tym trzaskać wink.gif
Go to the top of the page
+Quote Post
Skie
post
Post #7





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Dziękuję wszystkim za odpowiedzi smile.gif


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post

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 Aktualny czas: 21.08.2025 - 16:16