Какую из этих структур вы бы рекомендовали кому-то, кто знает основы PHP? Какие преимущества и недостатки?
Я бы не предложил какие-либо рамки для тех, кто знает только основы. Вместо этого, я бы посоветовал сначала получить твердое владение ООП и наиболее распространенными шаблонами дизайна, потому что именно это вы найдете в этих рамках. Это также не мешает вам узнать о доступных доступных PHP-библиотеках и расширениях.
Я считаю, что рамки – это обоюдоострый меч для начинающих. Вы можете делать больше за меньшее время во многих случаях, но в других случаях (а не в нескольких случаях) вы будете ошибаться, потому что не понимаете сложность кода рамки. Я думаю, вы должны быть в состоянии прочитать структуру и понять ее архитектуру, если хотите ее использовать.
Тем не менее, кажется, что настоящие трещины используют Symfony . Это может стать или быть уже самой лучшей, самой универсальной, самой мощной структурой. Но определенно нужно много понимать принципы программирования, а также веб-технологии и серверные технологии в целом.
Также очень мощным и намного проще начать с Zend Framework . Это может сделать для вас гораздо больше, чем Кохана.
Если вы хотите легкий вес, Кохана тоже хороший выбор. Он прошел долгий путь в последние месяцы, и я думаю, что он быстро зарекомендовал себя как новый легкий фаворит.
Итак, в целом, три фреймворка, о которых вы упоминали, являются тремя главными структурами на рынке фреймворков PHP в настоящий момент, и вы не ошибетесь ни с одним из них.
Несмотря на то, что ZF хорошо зарекомендовал себя и хорошо документирован, я бы предложил Kohana, поскольку он довольно немного сложнее. Очень легко начать заниматься этим, просто загрузив или клонировав образец приложения из github .
Симфония не для новичков. Я не согласен с тем, что рамки вообще не для новичков. Начиная с пустого файла и без рамки оставляет весь архитектурный дизайн до тех, кто не знает, что они делают, начиная с облегченной структуры, такой как Kohana, дает вам хорошо организованную платформу и документацию, чтобы попасть в исходное положение. Обучение OO без каких-либо примеров для вас очень сложно, так как вы еще не знаете, как выглядит хороший дизайн OO.
После загрузки / клонирования примера приложения Kohana, нажмите на документы, и вы быстро напишите хорошо продуманный OO-код.
Для начинающих и используя три примера, которые вы дали, я бы сказал, начните с Kohana (или Code Igniter) по этим причинам.
Затем я перейду к Zend Framework, если вы планируете или стремитесь работать над более крупными проектами по этим причинам:
Я не использовал symfony, но из того, что я могу сказать, также имеет некоторые полезные функции, как только вы получите больше возможностей для PHP (лучше ORM, лучше леса и т. Д.). Синопсис: Кохана – хорошее начало, но я бы посоветовал не идти туда, если вы планируете попасть в PHP за пределами небольших сайтов.
В вашем случае я бы пошел (в этом порядке):
Так как их легче подобрать (особенно для новичка), чем для Symphony.
Я всегда задавался вопросом, почему люди говорят, что не предоставление единичной тестовой системы является серьезным недостатком в рамках. Ну, тестирование вашего приложения – ваша ответственность, и вы должны использовать инструменты, с которыми вам больше всего нравится. Я, например, предпочитаю SimpleTest
и обеспокоен рамкой, которая поставляется в комплекте и способствует использованию собственной системы тестирования. Зачем изучать другую единую тестовую систему, когда SimpleTest
более чем достаточно?
Обратите внимание, что предоставление единичной тестовой системы и модуля, проверяющего структуру, – это две совершенно разные вещи. Рамки должны быть проверены на единицу, период. Но для этой задачи разработчики фреймворка могут использовать тот инструмент, который они предпочитают больше всего. Они могут даже опрокинуть свои собственные тестовые рамки (кажется, что некоторые люди никогда не учатся и не изобретают колесо). Однако (IMHO) рамочный тест должен храниться отдельно от самой структуры. Его даже не следует включать в рамки tarball, но сохраняться в виде отдельного пакета, интересного только разработчикам структуры.
Просто мой 2c.