Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Framework PHP a aplikacja SPA
Forum PHP.pl > Forum > PHP
strateg
Witam,

Potrafię biegle programować w wielu językach i nauka kolejnych funkcji nie sprawia mi problemów. Ostatnio mam jednak dość sporą zagwozdkę: czy opłaca się stosować frameworki PHP do tworzenia aplikacji SPA (single-page application)?

Cała struktura MVC jest ukryta we frameworku JS (korzystam z AngularJS). Jedyne, co potrzebuję od serwera to proste reakcje na bazie danych: pobierz / dodaj / usuń / zaktualizuj. To są praktycznie jedyne funkcjonalności, jakie serwer ma obsługiwać (oprócz oczywiście obsługi sesji / rejestracji, etc.).

Rozważałem korzystanie z frameworków, jednak w przypadku najlepszych (Yii, Laravel, etc.) położony jest nacisk na MVC - którego zwyczajnie nie potrzebuję, bo jest realizowany gdzie indziej. Mówiąc szczerze, najchętniej zrobiłbym proste skrypty w PHP wink.gif

Co o tym myślicie?

Pozdrawiam.
usb2.0
nie wiem co tam dokładnie potrzebujesz, ale we frameworku łatwo mógłbyś sobie REST zrobić i potem tylko requesty ze SPA wysylac
strateg
Aplikacja, którą robię jest generalnie bardzo prosta. Ogólna ilość zadań do obsłużenia będzie wynosiła około 25. Licząc, że każde zadanie to jeden plik, mamy około 30 plików po 25-100 linijek kodu. I w tym momencie zastanawiam się, czy jest sens korzystać z wielkich frameworków, skoro jedyne, co chcę robić to wykonywać operacje na bazie danych. Z modelu MVC pozostaje na sewerze jedynie M (model). Natomiast VC (view, controller) są implementowane u klienta.

I dlatego mam poważne wątpliwości do popularnych fw, czy ich stosowanie przypadkiem nie pogorszy czytelności rozwiązania.
usb2.0
no kontrolera bym nie pomijal, jako ze mozesz sobie w nim wymielic dane z bazy jak tylko chcesz i routing do tego

no i generalnei wcale nie musisz zaprzegac Symfony czy Zenda tylko np Silex'a
http://silex.sensiolabs.org/
Crozin
Wygląda na to, że na dobrą sprawę potrzebujesz od strony serwerowej czegoś w rodzaju webserwisu dla aplikacji.

1. Jak najbardziej możesz skorzystać z dowolnego FW PHP, z tymi "rozbudowanymi" na czele.
2. Albo robisz na prawdę trywialny projekt, albo nieprawidłowo oceniasz zadania, jakie będzie musiał realizować serwer. Przecież poza prostym dostępem do danych, przyjdzie Ci zmagać się z uwierzytelnianiem i autoryzacją użytkowników na różnych poziomach, sprawdzaniem poprawności danych, przygotowywaniem różnego rodzaju/wariantów odpowiedzi/danych zwracanych użytkownikowi, wykonywaniem tego wszystkiego czego po stronie użytkownika się nie da (od wysyłki maili, przez odpytywanie zew. usług, po komunikację z innymi użytkownikami Twojego systemu).
3. MVC to tylko wzorzec architektoniczny, i to że VC jest realizowane przez JS, a M przez serwer, nie oznacza, że ten ostatni sam w sobie nie może być znowu podzielony na MVC (czy dowolną inną architekturę).
strateg
Cóż, faktycznie, projekt jest trywialny. W ciągu mojego doświadczenia programistycznego jest najmniejszym z jakim miałem do czynienia, ale najbardziej przemyślanym biznesowo. On po prostu z założenia musi być prosty wink.gif Maili nie zamierzam wysyłać, autoryzacja ma przebiegać jako logowanie via Facebook (ewentualnie dodatkowe social media), do tego jakieś metody płatności. 90% procent skryptów miałoby następującą postać:
- sprawdzenie danych przychodzących (poprawne typy, usunięcie niebezpiecznych znaków, etc.),
- kontrola integralności danych (czy np. chcę usunąć informację należącą do użytkownika),
- wykonanie akcji,
- przerobienie odpowiedzi (proste zlepienie tabelek),
- wysłanie informacji JSON.

Sam wzorzec MVC wydaje mi się bardzo udany i faktycznie sprawdza się np. w AlgularJS. Wszystko mi ładnie dzieli, etc. W każdym razie nie jestem wrogo do niego nastawiony wink.gif OOP też nie jest mi obce, wychowany jestem na C#.

Dziękuję również za podane linki, widziałem je, z częścią fw się zapoznałem. Spróbuję jeszcze raz przemyśleć sprawę, jak podzielić owe skrypty na rozsądne części i czy jest to opłacalne w moim przypadku. A jeśli mielibyście polecać fw pod moje potrzeby - czyli dający dużą swobodę z dodatkowymi narzędziami. Osobiście rozważałbym: Phalcona, Yii lub Laravela. Kohana ma dla mnie za słabą dokumentację, a CI to już staruszek. Potrzebuję dużej wydajności i skalowalności, więc np. CakePHP odpada (z jakiegoś powodu strasznie wolno działa - wyłączałem tryb debug ofc). A co z micro-fw, np. Slim?

Pozdrawiam
Crozin
Absolutnie każdy FW się tutaj nada. Dostaniesz pewnie kilka bezwartościowych postów w stylu "XXX będzie tutaj idealny", albo "tylko YYY". Jeżeli znasz już jakiś - skorzystaj z niego, jeżeli chcesz poznać nowy - możesz zapytać w http://forum.php.pl/index.php?showtopic=184990&st=640 (nie warto robić kolejnego bezsensownego wątku dot. wyboru FW).

IMO zdecydowanie powinieneś skorzystać z jakiś (częściowo) gotowych rozwiązań - szkoda tracić czas na pierdoły typu "podtrzymanie sesji" albo "routing".

Absolutnie każdy FW się tutaj nada. Dostaniesz pewnie kilka bezwartościowych postów w stylu "XXX będzie tutaj idealny", albo "tylko YYY". Jeżeli znasz już jakiś - skorzystaj z niego, jeżeli chcesz poznać nowy - możesz zapytać w http://forum.php.pl/index.php?showtopic=184990&st=640 (nie warto robić kolejnego bezsensownego wątku dot. wyboru FW).

IMO zdecydowanie powinieneś skorzystać z jakiś (częściowo) gotowych rozwiązań - szkoda tracić czas na pierdoły typu "podtrzymanie sesji" albo "routing".
strateg
Cóż, nie ukrywam, że właśnie te wojny mnie trochę zniechęciły do fw. Jeszcze raz poszukam czegoś ciekawego. Dziękuję za odpowiedzi wink.gif

Krążyłem między dostępnymi frameworkami wiele razy, ale ostateczny wybór padł na Silex. Wydaje się najodpowiedniejszy dla mojego stylu myślenia, duże wsparcie, a jednocześnie umożliwia mi przeniesienie się do Symfony2, gdy będę potrzebował czegoś "większego".

Jeszcze raz chciałem wszystkim podziękować za pomoc. Temat do zamknięcia.

Pozdrawiam wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.