Kiedy muszę użyć frameworka? [Zamknięte]

15

Jestem nowy w programowaniu internetowym i obecnie uczę się o PHP. Chciałbym wiedzieć, kiedy muszę użyć frameworka PHP, takiego jak CakePHP? Co oferuje mi ta i inne podobne frameworki PHP? I czy naprawdę ważne jest, aby używać ram, aby być profesjonalistą?

  • Czy mogę stworzyć własną platformę, aby zapewnić funkcje, które mi się podobają?
Goma
źródło
3
Kiedy zrozumiesz, co oferuje i możesz obejść to w razie potrzeby, użyj frameworku [xyz]. Ramy są narzędziami przeznaczonymi dla wykwalifikowanych ludzi, którzy wiedzą, jak z nich korzystać i rozumieją ograniczenia swoich wyborów. W żadnym wypadku nie ucz się języka, studiując sam framework. To jak celowe wyłączanie palców u nóg lub widzenie peryferyjne. Wskazówka, sesje zachowują się dziwnie w zależności od używanego frameworka PHP .. bądź ostrożny :)
Tim Post

Odpowiedzi:

10

Kiedy czujesz się swobodnie z PHP, możesz zacząć korzystać z frameworka. I zawsze powinieneś ich używać:

  1. Jest to o wiele, wiele szybsze niż ponowne kodowanie wszystkiego
  2. Ułatwia modyfikacje, takie jak zmiana baz danych lub zmiana widoków
  3. Praca z innymi ludźmi również będzie łatwiejsza, ponieważ często są przyzwyczajeni do korzystania ze struktur wzorców MVC

Możesz stworzyć swój własny framework, ale zdecydowanie nie poleciłbym go. Jest to skomplikowane, istnieje już wiele dobrych ram i nie jest prawdopodobne, że znajdziesz brakującą funkcję. Poza tym często zapewniają sposoby dodawania do nich własnych funkcji, bez konieczności tworzenia zupełnie nowej.

DistantEcho
źródło
2
+1 za Kiedy czujesz się swobodnie z PHP, możesz zacząć korzystać z frameworka. Twój punkt 3) działa dobrze tylko wtedy, gdy ramy są bardzo podobne. Dodałbym: „nie twórz frameworka, zanim nie
użyjesz
8
Absolutnie nie zgadzam się ze stwierdzeniem „powinieneś zawsze ich używać”. Nie są one dostosowane do każdego projektu i często kończy się dokonywania modyfikacji trudniejsze . Narzędzia są znacznie cenniejsze niż frameworki.
Nicole,
+1 dla @NickC, nie mogłem się więcej zgodzić. Niektóre frameworki twierdzą, że są dynamiczne i łatwo je zmieniać, ale wtedy dochodzisz do pewnego punktu i po prostu ... nie możesz. Bardzo mi się podobało :)
Steve Hill
Zgadzam się, że MVC to bardzo dobra wspólna płaszczyzna, pozwalająca innym osobom wkroczyć do twojego kodu przy mniejszej krzywej uczenia się, gdy jest właściwie używana. Ale MVC jest tam świecącą gwiazdą, szkielet (lub jego brak) to tylko implementacja.
Tim Post
Wszystkie są teoretyczne i nie sprawdzają się w praktyce. Szkielety PHP utrudniają wszystkie te rzeczy. Przeciętna aplikacja napisana od zera potrzebuje około pięciuset do pięciu tysięcy wierszy kodu frameworka. To około tygodniowej średniej pracy. Jeśli to coś więcej, prawdopodobnie piszesz bibliotekę lub tworzysz wewnętrzną platformę.
jgmjgm
9

Zbuduj kilka stron bez frameworka ... zasadniczo zaczniesz pisać własne frameworki metodą prób i błędów. Po wykonaniu tej czynności przejdź do frameworka i ciesz się ilością zaoszczędzonego czasu. Próba zbudowania własnego frameworka może nauczyć Cię pewnych rzeczy i pomoże ci docenić frameworki, które już istnieją.

Kiedy po raz pierwszy dostałem się do PHP, myślałem, że frameworki to skomplikowana strata czasu. Teraz używam CodeIgniter do nawet prostych projektów. Uruchomienie zajmuje około 1 minuty, a już masz mnóstwo wspaniałych bibliotek. I, jak wspomniano w poprzednim plakacie, większość ram jest rozszerzalna, więc zawsze możesz dodać dowolną funkcjonalność.

TaylorOtwell
źródło
2
Ale jak mogę się później upewnić, że kod w frameworku jest dokładnie taki, jak chcę? Mam na myśli, że każdy programista ma swój własny styl, prawda? Co z ramami !!
Goma
1
@Goma Co z językiem? Nie znalazłem jeszcze takiego, który robi wszystko tak, jak chcę. Środowisko dodaje po prostu coś bardzo, bardzo podobnego (mam nadzieję na nieco wyższym poziomie abstrakcji). Poważnie, kodowanie nie polega na „sprawianiu, aby wszystko wyglądało / zachowywało się / zachowywało się dokładnie tak, jak chcę”. Chodzi o stworzenie czegoś, co jest przydatne, kod jest po prostu odpowiedzialnością, którą obciążamy, ponieważ korzyści przewyższają koszt posiadania tego kodu w pierwsze miejsce.
Christopher Creutzig
A teraz @TaylorOtwell jest twórcą Laravela ...
Hos Mercury
4

Jak powiedział Niphra , zacznij używać frameworka tylko wtedy, gdy możesz używać PHP bez frameworka (tzn. Uzyskać dostęp do bazy danych, wysyłać nagłówki i treść, przetwarzanie ciągów, manipulowanie danymi itp.). Jeśli chodzi o twoje pytania:

  • Kiedy muszę używać frameworka PHP, takiego jak CakePHP? Kiedy Twój projekt wykracza poza kilka plików PHP; moment, w którym zaczynasz silnie rozdzielać logikę na odrębne elementy i funkcjonalność modularyzacji / udostępniania (sesje itp.), to moment, w którym powinieneś użyć frameworka.

  • Co oferuje mi ta i inne podobne frameworki PHP? Abstrakcja; zamiast bezpośrednio wchodzić w interakcję z bazą danych, można użyć mapowania obiektowo-relacyjnego (ORM) do zarządzania strukturą i relacjami między danymi w bazie danych. Większość frameworków w wielu językach udostępnia ORM, aby ułatwić interakcję z warstwą bazy danych aplikacji. Podobnie ramy często oddzielają warstwy reakcji na interakcję użytkownika. Najczęstszym rozdziałem jest paradygmat Model View Controller (MVC), który, krótko mówiąc, wyodrębnia logikę bazy danych do Modelu (w wielu przypadkach interfejs do ORM), przetwarzając żądania i wchodząc w interakcję z Modelami w sterowniku, oraz renderowanie rzeczywistego HTML / PDF / obrazu / itp. do widoku. Frameworki często zapewniają inne narzędzia, takie jak routing (w celu umożliwienia kompleksowego przetwarzania identyfikatora URI żądania (np. Mapowanie żądania „http://example.com/users/1 ”do użytkowników kontrolera, którzy następnie wyszukują model użytkownika o identyfikatorze 1) oraz streszczenie sesji i innych podstawowych struktur.

  • I czy naprawdę ważne jest, aby używać ram, aby być profesjonalistą? Niekoniecznie; ramy ułatwiają życie; ale nie musisz go używać, aby być profesjonalistą. Szkielety zapewniają przydatną abstrakcję i standaryzację, ale w większości przypadków nie są wymagane.

sztylet
źródło
3

Po przeczytaniu niektórych odpowiedzi, chciałbym najpierw powiedzieć, że często nie masz zbyt wiele opcji, z jakich ram zamierzasz korzystać, czy też będziesz używać jednego z nich (jako profesjonalista). Nie chcę cię zastraszać, ale musisz zbudować wystarczającą wiedzę na temat PHP, aby umożliwić przechodzenie z jednego frameworka do drugiego, a także używanie więcej niż jednego frameworka na raz.

kiedy muszę użyć frameworka PHP, takiego jak CakePHP?

Nie ma na to uniwersalnej odpowiedzi. Jako profesjonalista zostaniesz poproszony o rozwiązanie określonych problemów, a to będzie decydujący czynnik, kiedy i co będzie z każdym projektem, szczególnie jeśli klient ma określone zapotrzebowanie. Ale ogólnie rzecz biorąc, zawsze będziesz używał jakiejś struktury frameworka z PHP, chyba że modyfikujesz lub rozszerzasz wcześniej istniejącą aplikację, która ma własną platformę (taką jak Wordpress lub PHPBB).

Co oferuje mi ta i inne podobne frameworki PHP?

Jak powiedział Dirk, oferują abstrakcję. Oznacza to, że biorą one wspólne, wieloetapowe procedury i starają się, aby były jak najprostsze i usprawnione. Krótko mówiąc, starają się przedstawić rozwiązania typu „dodaj wodę” do typowych zadań.

I czy naprawdę ważne jest, aby używać ram, aby być profesjonalistą?

Ogólnie rzecz biorąc, nie, nie jest ważne, aby używać ram, aby być profesjonalistą. Ale realistycznie, nie będziesz miał kariery, jeśli nie znasz przynajmniej kilku wspólnych ram. PHP bez frameworka jest jak C ++ bez biblioteki std. Nie potrzebujesz go i możesz zrobić więcej bez niego, ponieważ będziesz bezpośrednio korzystać z funkcji blokowania języka niższego poziomu, ale zrobienie tego samego zajmie ci znacznie więcej czasu.

Czy mogę stworzyć własną platformę, aby zapewnić funkcje, które mi się podobają?

Tak. W rzeczywistości prawdopodobnie to zrobisz, nawet jeśli nieumyślnie. Nie mam tu na myśli ekspansywnego frameworka typu „wszystko do zrobienia”, ale raczej zestaw narzędzi z podstawowymi funkcjami i skryptami wykonującymi zadania, które nie są powszechne ani wystarczająco ogólne, aby poradziły sobie z nimi przeciętne frameworki. Mój składa się w zasadzie z różnych systemów plików, obsługi procesów i bitów Tex-ex z kilkoma różnymi narzędziami do zwijania i przesyłania strumieniowego / gniazdowego.

JSON
źródło
1

Często zdarza się, że osoba, która spędziła lata, wymyślając własne sposoby rozmawiania z bazą danych i rozmawiania z internetowymi interfejsami API, a dopiero teraz zaczyna korzystać z ram, używaj ich, gdy przynajmniej rozumiesz, co robią, jeśli to możliwe.

Nie od razu skacz po RedBean przy pierwszej pracy z bazą danych, najpierw pracuj z DB. W ten sposób dokładnie rozumiesz, co faktycznie pobierasz i robisz z bazą danych, co może naprawdę pomóc w skalowalności. Możesz także stworzyć własne rozwiązanie, gdy używane środowisko nie robi czegoś, co musisz zrobić.

Gdy zrozumiesz, co się dzieje, skorzystaj z frameworka! To sprawia, że ​​rzeczy są o wiele łatwiejsze. Crazyness z przechowywaniem zapytanie następnie zapętlenie nad rezultaty mysql_fetch_assocto wszystko zniknęło, zredukowane do jednego połączenia: $book = R::load( "book", $id ). Będziesz o wiele bardziej produktywny i będziesz mógł łatwiej naprawiać przyszłe błędy lub dodawać przyszłe funkcje.

TheLQ
źródło
1

Użyj frameworka, gdy znasz wystarczająco podstawowe technologie, aby wiedzieć, co robi dla ciebie frameworek i dlaczego jest to dobre (lub złe).

Framework jest rodzajem meta-narzędzia, które pozwala pracować z twoimi narzędziami (językiem, bazą danych) nieco szybciej, bez martwienia się o niektóre szczegóły tego, co robisz, co jest dobre, jeśli naprawdę znasz swoją przybory.

To, czego NIE chcesz, aby się stało, to to, że uczysz się frameworka zamiast narzędzi, i stajesz się kanalizowany w określony sposób robienia rzeczy, i ostatecznie nie opanowujesz podstawowych języków i pojęć - powinno to być narzędzie, a nie kula.

Eli
źródło
1

Kiedy zauważysz, że robisz to samo w kółko, rozejrzyj się i sprawdź, czy istnieje środowisko, które robi te same zbędne rzeczy, które sam byś zrobił. Nie używaj tylko frameworka ze względu na szum. Osobiście podoba mi się „No-framework PHP MVC” CodeIgniter i Rasmus Lerdorf http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

programista
źródło
Napisałem kilka „ram frameworka”, aby złagodzić ból związany z dodawaniem nowych funkcji do głównie statycznych (i ogromnych) witryn, których po prostu nie można łatwo przenieść do jakiegokolwiek systemu zarządzania / publikacji, więc mają swoje zastosowania. Ale nie rzuciłbym własnego na zupełnie nowy projekt (użyłbym CI, gdyby wymagano frameworka).
Tim Post
@Tim Post Zazwyczaj nie ma czarno-białej odpowiedzi na to pytanie. Wszystko zależy od danego projektu, w oryginalnym poście nie podano szczegółów na temat konkretnego projektu.
programista
1
Wygląda na to, że dostałem głos od gorliwego ramowego fanatyka, fajnie!
programista
Twasn't ja :) Ktoś mógł zareagować na link, który opublikowałeś, ale nie wchodząc w szczegóły.
Tim Post
@Tim Post Heh! Dlatego postanowiłem oddzielić oba te komentarze. : D
programista
-1

Poleciłbym dokładnie przemyśleć, dlaczego miałbyś używać frameworka x, y lub z. Każdy framework zapewnia nie tylko funkcjonalność, której nie musisz implementować, ale także sposób myślenia. Wystarczy spojrzeć na Spring, JEE, Rails lub Django. Cztery frameworki zapewniające wystarczająco dużo czasu, aby zdeptać aplikację internetową.

Ale wszystkie cztery promują własny sposób myślenia o tym, jak należy tworzyć aplikacje internetowe. A jeśli to nie pasuje do twoich potrzeb lub smaku, trudno ci będzie iść dalej.

To bardzo radykalne porównanie, ale być może zbudowanie małej biblioteki lepiej odpowiada twoim potrzebom. Ale znajomość ram z pewnością pomoże ci pracować w większych zespołach lub znaleźć nowe miejsca pracy, ponieważ pokazuje to, że interesuje Cię rozwój oprogramowania jako całości.

Florian Salihovic
źródło
-2

Ramy są zawsze dobre w użyciu od samego początku. Zapewnia to użyteczność kodu, lepszą czytelność i oszczędność czasu programowania.

Nie mam dużego doświadczenia z PHP, ale zachęciłbym do użycia dowolnego frameworka.

Pierre Pretorius
źródło
Dlaczego głosowanie w dół?
Pierre Pretorius