Jestem programistą i mam doświadczenie w tworzeniu kilku aplikacji internetowych w PHP. Mam pomysł na opracowanie produktu dla siebie i zdecydowałem się na użycie frameworka opartego na MVC, ponieważ bardzo podoba mi się pomysł MVC oraz łatwość zarządzania i modyfikowania aplikacji bez żadnych trudności.
Wybrałem Zend Framework i wydaje się to trudniejsze niż nauka nowego języka programowania. Jest tak wiele rzeczy naraz, nawet w celu uruchomienia małej aplikacji.
Podobnie pomysł routingu jest bardzo złożony, ponieważ jest nowy dla głównego programisty. Wiem, że faceci tutaj czytają tysiące takich pytań, jak jedno, które zadaję, ale nie zamierzam uczyć się Zend Framework z dnia na dzień. Jestem gotów poświęcić tyle czasu, ile potrzebuje, ale do tej pory nie ma dla mnie sensu. W bibliotece Zend jest tysiące klas, ale skąd noob wiedziałby, gdzie użyć konkretnej klasy i jak z niej korzystać? Nadal bardzo trudno mi zrozumieć bootstrap Zend Framework i jego mapowanie. Czytam instrukcję, podążam za nią i wszystko zaczyna działać, ale tak naprawdę nie do końca tak, jak się naprawdę dzieją.
Nadal nie mam pojęcia, w jaki sposób modele, widoki i kontrolery współpracują ze sobą oraz jak zaplanować aplikację w Zend Framework. Jeśli chodzi o rdzeń php, mam dokładnie w głowie pomysł, co robić, a następnie łatwo przetłumaczyć je w kodzie, ale w Zend Framework nie wiem, jak przetłumaczyć mój pomysł.
źródło
Odpowiedzi:
Zend Framework jest trudny. Nie został zbudowany jako podstawowy poziom, zakłada się znajomość pojęć 1 . To powiedziawszy, pierwszym wymaganiem dla Zend Framework 2.0 jest uczynienie go nieco łatwiejszym:
Więc to nie tylko ty, jest to trudne dla wszystkich - przeczytaj całą stronę wiki, istnieje wiele rzeczy, które zostały określone jako niepotrzebnie złożone. Ale nawet jeśli powyższy wymóg zostanie spełniony, nadal nie stanie się on podstawową platformą, co oznacza, że nie jest to struktura, na której powinieneś się uczyć, ale taka, z której powinieneś korzystać, kiedy faktycznie rozumiesz związane z nią pojęcia.
Ponieważ wciąż się uczysz, o wiele bardziej wartościowe byłoby zbudowanie własnej architektury MVC. Rasmus Lerdorf za notorycznie 2 „ no-frameworkiem MVC framework ” blogu daje bardzo prosty i czysty przykład poprzez PHP MVC procesowego, bez ram lub innej biblioteki osób trzecich zaangażowanych.
Ale jeśli naprawdę chcesz uczyć się z frameworkiem, powinieneś rozważyć mikrostrukturę zamiast w pełni rozwiniętej. Slim ma bardzo małą, czystą i dokładnie przetestowaną bazę kodu i powinien być idealny do nauki. Nie bawiłem się żadnymi innymi mikroukładami, powinieneś przeprowadzić własne badania i zdecydować, który z nich jest dla ciebie lepszy.
Aby uzyskać szybkie i brudne wprowadzenie do routingu, zobacz moją odpowiedź na to pytanie . Nie jest to bardzo trudna koncepcja, ale Zend Framework sprawia, że wygląda o wiele więcej niż jest w rzeczywistości .
1 Najlepszy opis, jaki przeczytałem dla ZF, to to, że jest to framework do budowania frameworku , a nie frameworku aplikacji. Jego surowa moc i ekstremalna lista funkcji nie są odpowiednie dla małych i średnich stron internetowych. Niestety tak naprawdę nie mogę znaleźć, gdzie to przeczytałem.
2 Przeczytaj zastrzeżenie na górze postu na blogu.
Aktualizacja, zainspirowana komentarzem @ Karpie:
Framework nie powinien być trudny, cały sens ramy ma ułatwić rzeczy. Możliwe, że nawet jeśli dobrze rozumiesz związane z tym koncepcje, ZF nie jest dla ciebie odpowiedni.
Przy wyborze frameworka wiąże się wiele subiektywnych czynników i chyba że w każdym innym frameworku brakuje funkcjonalności, której absolutnie potrzebujesz - i nie możesz sam pisać, powinieneś unikać ZF i używać frameworku, który jest dla ciebie bardziej naturalny.
Jeśli znasz pojęcia, środowisko nie powinno przeszkadzać.
źródło
Nie podobało mi się brak możliwości wykrycia, kiedy zacząłem używać Zend Framework, zbyt wiele klas polega na tablicach i musisz sprawdzić, jakie klucze możesz / musisz zdefiniować.
Nie ma nic złego w posiadaniu przejrzystych metod lub nazwanych paramów, to znaczy, że imo przeszedł długą drogę do pomocy w odkrywalności.
Ramy Yii są jeszcze gorsze z tego rodzaju rzeczami.
źródło
Niektóre problemy z ZF, które sprawiają, że denerwująca (i trudna dla początkujących) praca z:
ORM nie jest wliczony w cenę . Można by pomyśleć, że powinna to być bardzo podstawa nowoczesnego frameworka MVC, ale tylko ZF ma tylko
Zend_Db_Table
niedorzecznie niski poziom. Możesz korzystać z Doctrine, ale wtedy jesteś sam, nie jest w żaden sposób zintegrowany z ZF.Nieczytelne, rozdęte routery URL . Na przykład potrzeba 9 linii kodu, aby zdefiniować najprostszy routing:
Biorąc pod uwagę ilość pytań z tym związanych, dla większości ludzi nie jest to proste. Ponadto nie mogę nic na to poradzić i porównać go z Django, gdzie byłby odpowiednik powyższego
Zend_Acl
jest sposobem na skomplikowanie większości przypadków użycia. Zwykle konieczne jest uwierzytelnienie w celu identyfikacji użytkownika. I opcja łatwego ograniczenia dostępu do niektórych kontrolerów tylko dla uwierzytelnionych użytkowników. W przypadku wielu użytkowników to wystarczy. W przypadku bardziej skomplikowanego przypadku logika biznesowa w kontrolerze musi ustalić, czy użytkownik ma uprawnienia do wykonania określonej akcji. W ZF nie masz opcji łatwego ograniczenia dostępu tylko do uwierzytelnionych użytkowników, standardowym sposobem jest korzystanie z ACL i systemu ról, bez względu na to, jak proste są Twoje potrzeby.Rozdęty układ katalogów i plików . Zalecana struktura katalogów wygląda następująco:
źródło
Zend Framework jest jak grupa niezależnych bibliotek, które razem działają jak framework. Bardzo trudno jest jednocześnie stworzyć coś oddzielonego i „łatwego w użyciu”. Dla „łatwego w użyciu” mam na myśli robienie skomplikowanych rzeczy za pomocą kilku linii kodu.
Zatem rozpoczynanie od Zend jest trudniejsze niż inne frameworki, takie jak CakePHP. Ale ja także łatwiej rozszerza i dostosowuje aplikację bez brudnych kodów. Zend przestrzega również standardów i wzorców projektowych w całym kodzie, więc po przeczytaniu kodu frameworka możesz odgadnąć, co się dzieje.
Kiedy mówisz, że nie masz pojęcia o tym, jak modele, widoki i kontrolery współpracują ze sobą, nie obwiniaj frameworka. Implementuje MVC jak każdy inny framework, z tym wyjątkiem, że oddziela Model od struktury Database, która w wielu frameworkach jest implementowana w tej samej klasie. Będziesz musiał stawić czoła wielu klasom, takim jak Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset itp.
Dlatego uważam, że Zend Framework jest bardziej skomplikowany, ponieważ jest bardzo oddzielony i możesz używać jego klas w innych projektach, które nie używają ZF.
źródło
Zend Framework wymaga solidnego uziemienia w OOP i wzorcach projektowych. Z mojego doświadczenia spotykam tylko doświadczonych programistów Java-JEE-Struts-Spring, którzy łatwo zapoznają się z Zend Framework. Przeciętny programista PHP ma trudności ze zrozumieniem koncepcji i architektury stojących za Zend Framework. Ale patrz hej! Zend Framework pochodzi od firmy „Zend”, która tworzy PHP na pierwszym miejscu. Dlatego trzeba się zastanowić, a może nie uszanować!
źródło
Wierzę, że zend ma tylko skomplikować sprawę, MVC to oszustwo logicznie działające jak zwykły PHP. ale rozwijasz go przed MVC, jak rozdzielanie plików w różnych katalogach.
Pamiętaj, że ten, kto mówi, że Zend jest bardzo bezpieczny i nie może się włamać, jest wielkim głupcem. Zend może również łatwo hakować, jeśli nie użyłeś zabezpieczeń iniekcyjnych Mysql. Chciałbym zasugerować zdefiniowanie własnych funkcji, a następnie rozdzielenie plików w różnych katalogach, aby było podobne, tak jak MVC zapisz funkcje, klasy i inne podstawowe materiały w jednym katalogu o nazwie kontroler, a następnie dodaj swoje strony internetowe w innym katalogu, w którym potrzebujesz aby uwzględnić wszystkie pliki funkcji, ten katalog będzie znany jako widok. umieść pliki javascript i css w różnych katalogach, które będą znane jako model.
Pamiętajcie, że na tym świecie wiele osób zawsze ciężko pracuje, aby skomplikować sprawę, ponieważ oni sami są skomplikowani do zrozumienia.
PHP jest językiem, którego uczysz się w książce i od nauczycieli. Zend to nic innego jak struktura, która komplikuje sprawy Twoim klientom. więc ilekroć klient potrzebuje modyfikacji, wracają do prawdziwych programistów, a ci programiści pobierają od Ciebie więcej pieniędzy. Zend jest chroniony po prostu kłamstwem, jeden błąd, taki jak zwykłe kodowanie php, może spowodować włamanie się na stronę.
źródło
Przynajmniej rzecz „szybkiego startu” musi być łatwiejsza, aby uczynić platformę przyjazną ..... jeśli wolisz coś trudniejszego niż lepszą, powiedziałbym: „ZF to najlepszy framework PHP”, w przeciwnym razie NIE. Pobrałem ZF-2 i wypróbowałem (szczerze mówiąc, jestem nowicjuszem w ZF). Smutne jest to, że wciąż nie znalazłem solidnego „przewodnika szybkiego startu” z prostym szkieletem projektu w Internecie. Jedyne, czego szukam, to prosty sposób dołączania plików bibliotecznych i tworzenia folderu projektu z funkcjami MVC. Użyłem Codeigniter, Cake php, Yii, ale uznałem, że jest dość nieprzyjazny. Tak, wiem, że Zend aktualizuje PHP, ale to nie znaczy, że jest to najlepszy framework lub cokolwiek powiesz.
źródło