Когда мне нужно использовать фреймворк? [закрыто]

15

Я новичок в веб-программировании, и в настоящее время я изучаю PHP. Я хотел бы знать, когда мне нужно использовать PHP-фреймворк, такой как CakePHP? Что мне предлагают эти и другие подобные PHP-фреймворки? И действительно ли важно использовать каркас, чтобы быть профессионалом?

  • И могу ли я создать свой собственный фреймворк, чтобы в него входили понравившиеся мне функции?
Гома
источник
3
Когда вы понимаете, что он предлагает, и можете обойти это, когда это необходимо, используйте [xyz] framework. Фреймворки - это инструменты, предназначенные для опытных людей, которые знают, как их использовать и понимают ограничения своего выбора. Ни при каких обстоятельствах не изучайте язык, изучая только основы. Это как намеренное отключение пальцев ног или периферийное зрение. Подсказка, сеансы ведут себя странно, в зависимости от того, какой PHP-фреймворк вы используете .. будьте осторожны :)
Тим Пост

Ответы:

10

Когда вы освоитесь с PHP, вы можете начать использовать фреймворк. И вы всегда должны использовать их:

  1. Это намного, намного быстрее, чем перекодировать все
  2. Это облегчает изменения, такие как изменение баз данных или изменение представлений
  3. Работать с другими людьми тоже будет проще, так как они часто используются для использования в шаблонных шаблонах MVC.

Вы можете создать свой собственный фреймворк, но я бы определенно не рекомендовал его. Это сложно, уже есть много хороших фреймворков, и вряд ли вы найдете недостающую функцию. Кроме того, они часто предоставляют способы добавить свои собственные функции к ним, не делая совершенно новых.

DistantEcho
источник
2
+1 к Когда вы освоитесь с PHP, вы можете начать использовать фреймворк. Ваш пункт 3) работает хорошо, только если рамки очень похожи. Я бы добавил «не создавайте фреймворк, прежде чем интенсивно использовать несколько разных»
peterchen
8
Я абсолютно не согласен с утверждением "вы всегда должны их использовать". Они не подходят для каждого проекта и часто в конечном итоге сделать изменения более трудными . Утилиты гораздо ценнее, чем фреймворки.
Николь
+1 за @NickC, я не могу не согласиться. Некоторые фреймворки утверждают, что они динамичны и их легко изменить, но затем вы достигаете определенной точки и просто ... не можете. Я много жаловался на подобные вещи :)
Steve Hill
Я согласен с тем, что MVC - это очень хороший общий язык, позволяющий другим людям входить в ваш код с меньшим количеством кривой обучения при правильном использовании. Но MVC - это сияющая звезда, а фреймворк (или его отсутствие) - это просто реализация.
Тим Пост
Все это теоретическое и не работает на практике. Фреймворки PHP, скорее всего, усложнят все эти вещи. Среднему приложению, написанному с нуля, требуется от пятисот до пяти тысяч строк кода платформы. Это примерно рабочая неделя. Если это нечто большее, вы, вероятно, либо пишете библиотеку, либо создаете внутреннюю платформу.
jgmjgm
9

Создайте несколько страниц без фреймворка ... вы по сути начнете писать свой фреймворк методом проб и ошибок. После того, как вы это сделаете, перейдите на фреймворк и наслаждайтесь тем, сколько времени вы экономите. Попытка создать собственную структуру может научить вас некоторым вещам и помочь вам оценить уже существующие платформы.

Когда я впервые попал в PHP, я думал, что фреймворки - это сложная трата времени. Теперь я использую CodeIgniter даже для простых проектов. Чтобы приступить к работе требуется около 1 минуты, у вас уже есть масса отличных библиотек. И, как упоминалось ранее, большинство фреймворков являются расширяемыми, поэтому вы всегда можете добавить любую функциональность, какую захотите.

TaylorOtwell
источник
2
Но как я могу убедиться позже, что код в фреймворке именно такой, как я хочу? Я имею в виду, что у каждого программиста свой стиль, верно? Как насчет рамок !!
Гома
1
@Goma Как насчет языка? Я еще не нашел того, который делает все так, как я хочу. Фреймворк просто добавляет что-то очень, очень похожее (надеюсь, на несколько более высоком уровне абстракции). Серьезно, кодирование - это не «заставить все выглядеть / вести себя / быть точно так, как я хочу». Речь идет о создании чего-то полезного, код - это та ответственность, которую мы берем на себя, потому что преимущества перевешивают стоимость наличия этого кода в первое место.
Кристофер Кройциг
А теперь @TaylorOtwell является создателем Laravel ...
Хос Меркьюри
4

Как сказал Нифра , начинать использовать каркас можно только тогда, когда вы можете использовать PHP без каркаса (то есть для доступа к базе данных, отправки заголовков и содержимого, обработки строк, манипулирования данными и т. Д.). Что касается ваших вопросов:

  • Когда мне нужно использовать PHP-фреймворк, такой как CakePHP? Когда ваш проект выходит за рамки нескольких файлов PHP; момент, когда вы начинаете строго разделять логику на отдельные элементы и функциональность модульности / совместного использования (сеансы и т. д.), - это когда вы должны использовать платформу.

  • Что мне предлагают эти и другие подобные PHP-фреймворки? абстракция; вместо непосредственного взаимодействия с базой данных вы можете использовать объектно-реляционное сопоставление (ORM) для управления структурой и связями между вашими данными в базе данных. Большинство фреймворков на многих языках предоставляют ORM, чтобы упростить взаимодействие с уровнем базы данных вашего приложения. Точно так же платформы часто разделяют уровни реагирования на взаимодействие с пользователем. Наиболее распространенным разделением является парадигма Model View Controller (MVC), которая, если быть кратким, абстрагирует логику базы данных в модель (во многих случаях интерфейс с ORM), обрабатывает запросы и взаимодействует с моделями в контроллере и рендеринг актуального HTML / PDF / изображения / и т. д. в вид. Фреймворки часто предоставляют другие инструменты, такие как маршрутизация (для обеспечения сложной обработки URI запроса (например: отображение запроса)http://example.com/users/1 "для контроллера Users, который затем ищет Модель пользователя с идентификатором 1) и абстракцию сессий и других базовых структур.

  • И действительно ли важно использовать каркас, чтобы быть профессионалом? Не обязательно; рамки облегчают жизнь; но вам не нужно использовать один, чтобы быть профессионалом. Фреймворки обеспечивают удобную абстракцию и стандартизацию, но в большинстве случаев они не обязательны.

кортик
источник
3

Прочитав некоторые ответы, я хотел бы сначала сказать, что у вас не часто есть выбор, какую платформу вы собираетесь использовать или собираетесь ли вы использовать один или нет (как профессионал). Я не хочу вас запугивать, но вам нужно будет выработать достаточно понимания PHP, чтобы можно было переходить с одного фреймворка на другой, а также использовать более одного фреймворка одновременно.

когда мне нужно использовать PHP-фреймворк, такой как CakePHP?

На это нет универсального ответа. Как профессионал, вам будет поручено решать конкретные проблемы, и это будет решающим фактором, когда и что будет с каждым проектом, особенно если у клиента есть конкретный спрос. Но, вообще говоря, вы всегда будете использовать какую-то форму фреймворка с PHP, если только вы не модифицируете или не расширяете уже существующее приложение, которое имеет свою собственную фреймворк (например, Wordpress или PHPBB).

Что мне предлагают эти и другие подобные PHP-фреймворки?

Как сказал Дирк, они предлагают абстракцию. Это означает, что они принимают общие многоэтапные процедуры и стараются сделать их максимально простыми и оптимизированными. Короче говоря, они пытаются представить решения «просто добавь воды» для решения общих задач.

И действительно ли важно использовать каркас, чтобы быть профессионалом?

Вообще говоря, нет, не важно использовать рамки, чтобы быть профессионалом. Но реально, у вас не будет большой карьеры, если вы не знакомы хотя бы с парой общих рамок. PHP без фреймворка похож на C ++ без библиотеки std. Вам это не нужно, и вы на самом деле можете сделать больше без него, так как вы будете напрямую использовать функциональные возможности языка нижнего уровня, но вам потребуется гораздо больше времени, чтобы сделать то же самое.

И могу ли я создать свой собственный фреймворк, чтобы в него входили понравившиеся мне функции?

Да. На самом деле, вы, вероятно, в конечном итоге сделаете это, даже если непреднамеренно. Под этим я не подразумеваю обширную универсальную инфраструктуру, но больше напоминаю набор инструментов с базовыми функциями и сценариями, которые выполняют задачи, которые не являются общими или достаточно общими, чтобы их можно было обрабатывать средней структурой. Мой в основном состоит из различных файловых систем, обработки процессов и битов rex-ex с несколькими различными утилитами curl и stream / socket.

JSON
источник
1

Как правило, от человека, который потратил годы, взламывая мои собственные способы общения с базой данных и общения с онлайн-API, и только сейчас начинаю использовать фреймворки, используйте их, когда вы хотя бы понимаете, что они делают, если это возможно.

Не сразу переходите к RedBean при первой работе с базой данных, сначала работайте с БД вручную. Таким образом, у вас есть полное понимание того, что вы на самом деле выбираете и делаете с БД, что может реально помочь с масштабируемостью. Затем вы также можете создать собственное решение, если используемая среда не выполняет то, что вам нужно.

Как только вы поймете, что происходит, используйте фреймворк! Это делает вещи намного проще. Crazyness с хранением запроса затем цикл над результатами с mysql_fetch_assocвсе ушли, сводится к одному вызову: $book = R::load( "book", $id ). Вы будете намного продуктивнее и сможете гораздо легче исправлять будущие ошибки или добавлять будущие функции.

TheLQ
источник
1

Используйте фреймворк, когда вы достаточно хорошо знаете базовые технологии, чтобы знать, что он делает для вас и почему это хорошо (или плохо).

Фреймворк - это своего рода мета-инструмент, который позволяет вам работать с инструментами (языком, базой данных) немного быстрее, не беспокоясь о некоторых деталях того, что вы делаете, и это хорошо, если вы действительно знаете свой инструменты.

То, что вы НЕ хотите, чтобы это произошло, - это то, что вы изучаете структуру вместо инструментов, и становитесь канализованным для определенного способа ведения дел, и в конечном итоге не осваиваете базовые языки и понятия - это должно быть инструмент, а не костыль.

Eli
источник
1

Когда вы обнаруживаете, что делаете одно и то же снова и снова, оглянитесь вокруг и посмотрите, не существует ли фреймворк, который выполняет те же избыточные вещи, которые вы в конечном итоге сделали бы самостоятельно. Не просто используйте рамки из-за обмана. Мне лично нравится CodeIgniter и Rasmus Lerdorf "PHP-фреймворк без фреймворка PHP" http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html

программист
источник
Я написал несколько «фреймворков без фреймворка», чтобы облегчить боль, связанную с добавлением новых функций в основном статические (и огромные) сайты, которые просто не могут быть легко перенесены в какую-либо систему управления / публикации, поэтому они действительно используются. Но я бы не стал снимать свой собственный для совершенно нового проекта (я бы просто использовал CI, если бы потребовалась среда).
Тим Пост
@Tim Post Обычно на этот вопрос никогда не бывает черно-белого ответа. Все зависит от того, какой проект находится под рукой, в первоначальном посте не было подробностей о конкретном проекте.
программист
1
Похоже, я получил отрицательный голос от фаната фреймворка, хорошо!
программист
Это не я :) Кто-то, возможно, реагировал на ссылку, которую вы разместили, не вдаваясь в подробности.
Тим Пост
@ Тим пост Хех! Вот почему я постарался разделить оба этих комментария. : D
программист
-1

Я бы рекомендовал тщательно продумать, почему вы бы использовали рамки x, y или z. Каждый фреймворк предоставляет не только функциональность, которую вам не нужно реализовывать самостоятельно, но и способ мышления. Просто посмотрите на Spring, JEE, Rails или Django. Четырех фреймворков, достаточных для того, чтобы за короткое время избавиться от веб-приложения.

Но все четверо продвигают свой собственный способ мышления о том, как должны создаваться веб-приложения. Если это не соответствует вашим потребностям или не соответствует вашему вкусу, вам будет нелегко идти дальше.

Это было очень радикальное сравнение, но, возможно, создание небольшой библиотеки лучше соответствует вашим потребностям. Но знание фреймворков определенно поможет вам работать в больших командах или находить новые рабочие места, поскольку это показывает, что вы заинтересованы в разработке программного обеспечения в целом.

Флориан Салихович
источник
-2

Рамки всегда хорошо использовать с самого начала. Это способствует повторному использованию кода, лучшей читаемости и экономит время на разработку.

Я не очень разбираюсь в PHP, но я бы поощрял любое использование фреймворка.

Пьер Преториус
источник
Почему голосует против?
Пьер Преториус