Я веб-разработчик и имею опыт разработки нескольких веб-приложений на PHP. У меня есть идея разработать продукт для себя, и я решил использовать инфраструктуру на основе MVC, потому что мне действительно нравится идея MVC и то, как можно легко управлять и изменять приложение без каких-либо трудностей.
Я выбрал Zend Framework, и это кажется более сложным, чем изучение нового языка программирования. В одно время происходит так много вещей, что даже запускается небольшое приложение.
Точно так же идея маршрутизации очень сложна, поскольку она является новой для программиста ядра. Я знаю, что ребята здесь читают тысячи таких вопросов, как один, который я задаю, но я не собираюсь изучать Zend Framework за одну ночь. Я готов дать столько времени, сколько нужно, но до сих пор это не имеет для меня смысла. В библиотеке Zend есть тысячи классов, но как бы нуб узнал, где использовать специальный класс и как его использовать? Я все еще нахожу очень трудным для понимания начальной загрузки Zend Framework и его отображения. Я читаю руководство, следую ему, и все начинает работать, но я действительно не совсем понимаю, как они на самом деле происходят.
Я также до сих пор не знаю, как модели, представления и контроллеры работают вместе и как планировать приложение в Zend Framework. Когда дело доходит до основного php, у меня точно есть идея, что делать и чем легко перевести их в код, но в Zend Framework я не знаю, как перевести мою идею.
источник
Ответы:
Zend Framework это сложно. Он не был построен в качестве основы начального уровня, предполагается, что знание соответствующих концепций 1 . Тем не менее, первое требование к Zend Framework 2.0 - сделать его немного проще:
Так что это не только вы, это трудно для всех - прочитайте всю вики-страницу, есть довольно много вещей, которые определены как излишне сложные. Но даже если вышеуказанное требование будет выполнено, оно все равно не станет средой начального уровня, а это означает, что это не среда, на которой вы должны учиться, а та, которую вы должны использовать, когда вы действительно поняли вовлеченные концепции.
Поскольку вы все еще учитесь, было бы гораздо ценнее создать собственную архитектуру MVC. Расмус Лердорф в пресловутом 2 « The No-рамка PHP MVC рамка » блог дает очень простой и чистый пример MVC с помощью процедурного PHP, без каких - либо рамок или другой библиотеки третьего лица.
Но если вы действительно хотите учиться с помощью фреймворка, вы должны рассмотреть микро-фреймворк вместо полноценного. Slim имеет очень маленькую, чистую и тщательно протестированную кодовую базу, и она должна быть идеальной для обучения. Я не играл ни с какими другими микро-фреймворками, вы должны провести собственное исследование и решить, какой из них лучше для вас.
И для быстрого и грязного введения в маршрутизацию, смотрите мой ответ на этот вопрос . Это не очень сложная концепция для понимания, но Zend Framework заставляет ее выглядеть намного больше, чем есть на самом деле .
1 Лучшее описание, которое я прочитал для ZF, это то, что это фреймворк для построения фреймворка , а не фреймворк приложения. Это сырая мощь, а экстремальный список функций не подходит для небольших и средних веб-сайтов. К сожалению, не могу найти, где я это прочитал.
2 Прочитайте заявление об отказе от ответственности в верхней части сообщения блога.
Обновление, вдохновленное комментарием @ Karpie:
Фреймворк не должен быть сложным, весь смысл фреймворка в том, чтобы сделать вещи проще. Вполне возможно, что даже с твердым пониманием концепций, ZF не подходит для вас.
При выборе фреймворка учитывается множество субъективных факторов, и если в любой другой фреймворке не хватает функциональности, которая вам абсолютно необходима - и вы не можете писать самостоятельно, вам следует избегать ZF и использовать фреймворк, который кажется вам более естественным.
Если вы знаете концепции, структура не должна мешать.
источник
Мне не понравилось отсутствие обнаруживаемости, когда я начал использовать Zend Framework, слишком много классов полагаются на массивы, и вам приходится искать, какие ключи вы можете / должны определить.
Нет ничего плохого в том, чтобы иметь четкие методы или именованные параметры, это, во всяком случае, помогло бы с обнаружением.
Структура Yii еще хуже с такими вещами.
источник
Некоторые проблемы с ZF, которые мешают (и трудным для начинающих) работать с:
ОРМ не входит . Можно было бы подумать, что это должно быть очень основой современной инфраструктуры MVC, но ZF только идет
Zend_Db_Table
, что является смехотворно низким уровнем. Вы можете использовать Doctrine, но тогда вы сами по себе, он никак не интегрирован с ZF.Нечитаемые, раздутые URL-маршрутизаторы . Например, требуется 9 строк кода, чтобы определить самую простую маршрутизацию:
Учитывая количество вопросов, связанных с этим, это совсем не просто для большинства людей. Кроме того, я не могу с этим поделать и сравниваю это с Django, где эквивалент выше был бы
Zend_Acl
Это сложный способ для большинства случаев использования. Обычно у вас будет аутентификация для идентификации пользователя. И возможность легко ограничить доступ к некоторым контроллерам только для аутентифицированных пользователей. Для многих пользовательских случаев этого достаточно. В более сложном случае это будет зависеть от бизнес-логики в контроллере, чтобы определить, есть ли у пользователя разрешения на выполнение определенного действия. В ZF у вас нет возможности легко ограничить доступ только для аутентифицированных пользователей, стандартным способом является использование ACL и системы ролей, независимо от того, насколько просты ваши потребности на самом деле.Раздутый каталог и файл макета . Рекомендуемая структура каталогов выглядит следующим образом:
источник
Zend Framework похож на кучу независимых библиотек, которые вместе работают как фреймворк. Очень сложно что-то разработать в то же время отделенное и «простое в использовании». Для «простого в использовании» я имею в виду делать сложные вещи с несколькими строками кода.
Итак, начинать с Zend сложнее, чем другие фреймворки, такие как CakePHP. Но я также легче расширяю и настраиваю ваше приложение без грязных кодов. Zend также следует стандартам и шаблонам проектирования по всему своему коду, поэтому, прочитав код фреймворка, вы сможете догадаться, что происходит.
Когда вы говорите, что понятия не имеете о том, как модели, представления и контроллеры работают вместе, пожалуйста, не вините фреймворк. Он реализует MVC, как и любой другой фреймворк, за исключением того, что он отделяет модель от структуры базы данных, которая во многих фреймворках реализована в одном и том же классе. Таким образом, вы столкнетесь с множеством классов, таких как Zend_Db_Table, Zend_Db_Table_Row, Zend_Db_Table_Rowset и т. Д ...
Вот почему я думаю, что Zend Framework более сложный, потому что он очень отделен, и вы можете использовать его классы в других проектах, которые не используют ZF.
источник
Zend Framework требует определенных основ в ООП и шаблонах проектирования. Исходя из своего опыта, я нахожу только опытных программистов на Java-JEE-Struts-Spring, которые легко знакомятся с Zend Framework. Среднестатистическому разработчику PHP трудно усваивать концепции и архитектуру Zend Framework. Но смотри, эй! Zend Framework происходит от компании «Zend», которая создает PHP в первую очередь. Так что нужно подумать, может быть, если не уважение!
источник
Я считаю, что Zend просто усложняет ситуацию, MVC - это просто мошенничество, логически работающее как обычный PHP. но вы разрабатываете его перед MVC, как разделение файлов в разных каталогах.
Помните, что тот, кто говорит, что Зенд очень защищен и не способен взломать, - большой дурак. Zend также может легко взломать, если вы не использовали защиту от инъекций Mysql. Я хотел бы предложить вам определить ваши собственные функции, а затем разделить ваши файлы в разных каталогах, чтобы сделать их похожими, как MVC, сохранить ваши функции, классы и другие основные материалы в одном каталоге, называемом контроллером, а затем добавить ваши веб-страницы в другой каталог, где вам нужно чтобы включить все эти функциональные файлы, этот каталог будет известен как view. поместите ваши javascript и css файлы в разные каталоги, которые будут называться model.
Помните, что в этом мире многие люди всегда упорно трудиться, чтобы сделать вещи более сложными, поскольку они сложно сам себе понять.
PHP - это язык, который вы изучаете в книгах и у учителей. Zend - это не просто фреймворк, чтобы усложнить задачу для ваших клиентов. поэтому, когда клиенту понадобятся какие-либо изменения, он будет обращаться к настоящим разработчикам, и эти разработчики будут брать с вас больше денег. Zend защищен, все это просто ложь, такая простая ошибка, как простое кодирование php, может привести к взлому сайта.
источник
По крайней мере, «быстрый старт» должен быть проще для того, чтобы сделать фреймворк дружественным… если вы предпочитаете что-то более сложное, как лучшую вещь, то я бы сказал: «ZF - лучший PHP-фреймворк», иначе НЕ. Я скачал ZF-2 и опробовал его (честно говоря, я новичок в ZF). Печально то, что я до сих пор не нашел в интернете надежного «краткого руководства» с простым Project Skeleton. Все, что я ищу, - это простой способ включения библиотечных файлов и создания папки проекта с функциями MVC. Я использовал Codeigniter, Cake php, Yii, но нашел это довольно недружелюбным. Да, я знаю, что Zend обновляет PHP, но это не значит, что это лучший фреймворк или что бы вы ни говорили.
источник