Jako hobby rozwijam się w PHP od około 8 lat. W 2009 roku sięgnąłem po Codeignitera i od tego czasu nie udało mi się stworzyć ani jednego projektu.
Uważam, że spowalnia mnie to, próbując wymyślić, jak go zmodyfikować, aby działał tak, jak chcę, gdybym pracował w czystym PHP, wiedziałbym lub byłbym w stanie szybko znaleźć fragment kodu.
Próbowałem CodeIgniter, Kohana i Symfony. Uwielbiam łatwość użycia (a także zacząłem używać doctrine jako ORM, co znacznie przyspieszyło moją pracę z bazą danych), ale uważam, że projekty zajmują mi 3-4 razy więcej czasu niż w czystym PHP. Nudzę się i denerwuję, gdy nie mogę znaleźć rozwiązania problemu, który wcześniej rozwiązałem w czystym PHP.
Czy ktoś wrócił z używania frameworków do podejścia bez ram. Czy istnieje coś takiego jak podstawowa struktura bezpieczeństwa (zapobieganie XSS, filtrowanie opublikowanych danych, zapewnienie funkcji czyszczenia do użytku z bazami danych)? Myślę, że coś takiego przyniosłoby mi dużo więcej korzyści niż ramy na pełną skalę. Myślę, że nauka pracy z frameworkami wiele mnie nauczyła, ale praca z własnym kodem byłabym szczęśliwsza.
źródło
Odpowiedzi:
Bieżące wersje PHP5 zawierają znaczną część struktury bezpieczeństwa, której szukasz, jako część standardowej biblioteki.
httponly
atrybut do session_set_cookie_params () (Chroni przed skryptami odczytującymi plik cookie sesji w kompatybilnych przeglądarkach)httponly
atrybutu z setcookie () .Jeśli akceptujesz HTML jako dane wejściowe, polecam pobranie HTML Purifier i wywołanie go za pomocą linii FILTER_CALLBACK w konfiguracji filter_input_array . Oparte na białej liście podejście do bezpieczeństwa danych wejściowych stanowi doskonałą (i bardzo potężną) pierwszą linię obrony przed XSS.
O ile wiem, PHP nie zawiera mechanizmu chroniącego przed fałszowaniem żądań między witrynami , ale jestem pewien, że Google może Ci w tym pomóc. W OWASP zabezpieczeń Cheatsheets zawierać sekcję na to, czy chcesz, aby zaimplementować własną ochronę.
Z ciekawości postanowiłem też przyjrzeć się samodzielnym komponentom i oto co znalazłem do tej pory:
Szablony:
Rzeczy, których nadal nie sprawdziłem poprawnie:
źródło
Nie wierzę w frameworki ... Pracowałem w wielu z nich.
Powody nienawiści do frameworków MVC:
1) Nadużywanie kodu, kupuję klasy premium, które pomagają mi w rozwoju. Takich jak klasy formularzy lub klasy SQL.
2) Uważam, że frameworki MVC nie są łatwe do przenoszenia, zwłaszcza gdy używa się menedżerów zależności.
3) Uważam, że w rzeczywistości piszesz więcej kodu za pomocą frameworka MVC, niż gdybyś musiał użyć standardowego schematu z mnóstwem przydatnych klas, które obsługują uwierzytelnianie itp.
4) Większość frameworków obsługuje również natywnie tylko jedną lub dwie bazy danych.
Sugerowałbym znalezienie frameworka formularzy z uwierzytelnianiem i edytorem tekstu oraz frameworku sql, takim jak madoo + klasa e-mail ...
90% aplikacji to zawsze formularze, klasy sql i ajax - resztę można po prostu nabyć w razie potrzeby
Jestem minimalistą i zmagam się z pomysłem posiadania w mojej aplikacji kodu, który nic nie robi ... na wszelki wypadek nie działa dla mnie.
źródło
Mając za sobą tak duże doświadczenie, musisz mieć swój własny zestaw ulubionych bibliotek, wybrać je ręcznie i wymyślić własną prostą strukturę. Framework lub brak frameworka (i który z nich) zależy od rodzaju projektu, żadna rękawica nie pasuje do wszystkich. Więc zdecydowanie sugerowałbym, że jeśli uważasz, że istniejące frameworki spowalniają cię, spędź trochę czasu i wymyśl ramy, które działają zgodnie z twoimi potrzebami.
źródło
Opierając się na Twoim stwierdzeniu, że używasz PHP jako hobby, a także na stwierdzeniu w profilu „Powolne osiąganie celu”, wydaje się, że jest to problem z krzywą uczenia się. Wydaje się, że nie masz dogłębnego i rozległego doświadczenia, aby a) zrozumieć, jak pracować w ramach struktury, którą narzuca ramy oraz b) w ten sposób nie jesteś w stanie czerpać korzyści z wydajności, jaką zapewnia ta struktura.
Zachęcam do trzymania się tego. Wróć do początku, korzystając z samouczków wideo. Znajdź i czytaj kod innych ludzi, dopóki go nie zrozumiesz. Twórz projekty od podstaw - po prostu zacznij i dodawaj funkcje. Śledź fora, próbując samodzielnie odpowiedzieć na pytania przed przeczytaniem odpowiedzi.
Programuję zawodowo od prawie 20 lat, na różnych platformach i nadal potrzebowałem trochę czasu, zanim zaznajomiłem się z CI. Ale teraz, kiedy jestem, nie wróciłbym do czystego PHP (dla moich własnych projektów), chyba że miałbym witrynę o wystarczającej skali, która ujawniałaby mierzalne problemy z wydajnością (pomyśl o Twitterze).
źródło
Zend Framework jest do tego naprawdę świetny. Możesz używać tyle, ile chcesz. Wszystko jest zakodowane w php i open source, więc możesz po prostu zhakować i uczynić go swoim. Poszczególne komponenty nie są od siebie zależne tak bardzo, jak w innych frameworkach.
Możesz bez problemu zbudować sobie prosty framework używając niektórych komponentów Zend.
Sprawdź to!
źródło
Wiem dokładnie, co czujesz. Zacząłem 4 ~ 5 lat temu w PHP (pochodzę z Delphi, lol) i zacząłem w czystym php. To, co miałem z powrotem, to "Panel CMS podobny", który po prostu czyta wszystkie pola tabel i tworzy formularz. Po jakimś czasie doszedłem w jakiś sposób do znajomości frameworka PHP, najpierw wypróbowałem CakePHP i nie podobało mi się, po czym dostałem się do Yii, która moim zdaniem jest dość intuicyjna i łatwa w użyciu (z generatorem Gii to całkiem nieźle). Wypróbowałem Symfony, ZF2, Laravel, Yii2-Beta i kilka frameworków dla RAD, ale nadal nie czułem się wystarczająco szybko, jak przed frameworkami.
Zdarzyło się, że stworzyłem własny framework (oczywiście nie było tak, że pewnego dnia obudziłem się i powiedziałem: „Zamierzam stworzyć nowy framework”, stało się z czasem). Wiem, że to zła, zła, zła praktyka i ruch „na nowo wymyślony na kółkach”, ALE teraz rozwijam swoje projekty znacznie szybciej (więcej niż tylko PHP).
Ponieważ jego kod to totalna MESS, zacząłem około miesiąc temu przeformułować mój framework, teraz używa kompozytora, przestrzega wspólnych reguł, które istnieją między frameworkami php, to MVC.
Dlaczego zmieniam formułę? Bo jeśli ktoś będzie musiał naprawić mój projekt, to nie będzie to inny świat.
Więc rozumiem cię.
Moja rada jest taka, przygotuj swoje narzędzia (nazwij to frameworkiem, wstępnie ustawioną aplikacją lub jakkolwiek ludzie to nazywają) i używaj ich tak, jak czujesz się lepiej, ale nadal przestrzegaj pewnych wspólnych zasad można wymienić w przypadku zerwania.
źródło
Dla podstawowego bezpieczeństwa używam niestandardowej metody filtrowania, która obejmuje moje superglobale . Jego składnia wymaga trochę przyzwyczajenia, ale jest prostsza niż interfejs API filter_var () PHP i nie pozwala na poślizgnięcie się od sanityzacji:
$_GET->text("inputvar") or $_POST->name["field"]
Pozwalał również na wbudowane znaki ucieczki $ _REQUEST-> sql (). Ale do pracy z bazą danych nadal używaj sparametryzowanego SQL lub wybranego DAL / ORM.
źródło
Zrobiłem jednodniowe badanie ToroPHP i okazało się, że jest całkiem przyjemny. Jest to minimalistyczny framework przeznaczony dla aplikacji RESTful. Dzięki temu możliwe jest zachowanie modułowości kodu po stronie serwera, bez konieczności zajmowania się nadmiarem jakiegokolwiek frameworka.
źródło
Nie wiem, co cię trapi, ale codeigniter to świetny framework, ma ładną dokumentację, a ponieważ wiele osób używa codeignitera, całą pomoc znajdziesz w jego dokumentacji, na forum lub na stackoverflow. Pracowałem na wielu frameworkach ( Codeigniter, CakePHP, Zend, Spring 3.0, Ruby on Rails), ale muszę powiedzieć, że codeigniter ma najlepszą dokumentację, w Codeigiterze jest wiele rzeczy, które są obsługiwane automatycznie i nie musisz martwić się o bezpieczeństwo. Praca nad rdzeniem PHP jest jak wymyślanie na nowo koła. Cóż, najważniejszą rzeczą jest to, że przejście od rdzenia do frameworka będzie wymagało dużo wysiłku, gdy już się do niego przyzwyczaisz, zaczniesz go kochać.Również Ruby on rails to również świetny framework, gdy poznasz jego tajniki, które możesz mają podwójną prędkość.
źródło