Зачем использовать веб-фреймворк (например, rails) поверх php? - PullRequest
9 голосов
/ 17 мая 2009

Вопрос не в том, какую платформу использовать. Я изучил и Rails, и Django, и я пишу все свои веб-приложения на PHP. Мой вопрос, зачем возиться с рамками? Мне всегда требовалось больше времени для использования инфраструктуры, чем для повторного использования старого кода MySQL и создания «моделей» с помощью phpMyAdmin. Мне также нравится писать все самому, потому что я знаю, что происходит. Я все еще могу повторно использовать функции и т. Д. И делать то, что хочу, и эта свобода, по-видимому, отсутствует в большинстве фреймворков.

Я не говорю, что мой путь верен; на самом деле, я пытаюсь выяснить, где моя логика не работает. Обман не может быть просто воздухом. Чего мне не хватает?

Ответы [ 12 ]

28 голосов
/ 17 мая 2009

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

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

Практически у каждого разработчика есть инстинкты ковбойского кодирования, которые говорят ему: «Делать вещи самому гораздо веселее, чем использовать код, написанный другими, и я уверен, что я достаточно хорош, чтобы сделать это правильно с первого раза, так что это даже будь быстрее и лучше! Эти инстинкты почти всегда неверны.

21 голосов
/ 17 мая 2009

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

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

7 голосов
/ 17 мая 2009

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

4 голосов
/ 17 мая 2009

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

3 голосов
/ 17 мая 2009

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

Возможно, у вас уже есть кодовая база, которая поможет вам сделать это. Проверьте некоторые из фреймворков PHP, потому что именно там вам удобнее. Взгляните на CakePHP , CodeIgnitor и / или Zend Framework .

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

2 голосов
/ 17 мая 2009

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

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

Вы даже можете пойти дальше и создать базовые классы, из которых вы расширяете новые классы для создания своих сайтов. (например: объекты данных с общими методами выбора / вставки / обновления / удаления).

Бьюсь об заклад, это дает вам лучшее представление о том, почему фреймворки так чертовски удобны;)

1 голос
/ 17 мая 2009

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

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

Попробуйте сделать это с нуля: - правильное подтверждение формы - Обработка нескольких языков и форматирования даты / времени - Аутентификация

Рассматривайте фреймворк как бесплатные инструменты и стабильно реализованную функцию для использования.

1 голос
/ 17 мая 2009

Во-первых, в PHP тоже есть фреймворки, поэтому вопрос, о котором идет речь, не подходит.

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

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

DHH - умный парень, но Рельсы, которые у нас есть сегодня, никогда не могли быть реализованы им одним. Даже близко.

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

1 голос
/ 17 мая 2009

Вы также должны просто использовать основанные на PHP фреймворки, такие как Symfony или CakePHP, и их использование значительно сократит ваше производственное время.

Одной из причин использования фреймворка является разделение кода. Взять хотя бы symfony. Модель сделана с помощью библиотек Propel или Doctrine. Требуется очень мало SQL. Вы создаете новый объект и пользовательские методы получения и установки, чтобы хранить свои данные, и вместо записи SQL в коде своей страницы вы создаете функции в объектах, связанных с запросом. Когда вам нужно получить доступ к одному и тому же виду данных на разных страницах, вы запрашиваете модель, сохраняя бизнес-логику в соответствии с моделью, где она должна быть, поэтому разницы нет. Вся работа выполняется в «функции контроллера действий». Вы получаете все данные, которые вам нужны, и затем помещаете на дисплей как можно меньше php, в основном просто отображая переменные, которые вы получили в контроллере действий (за исключением некоторых для циклов for и операторов if для условных выражений. Я нашел это более эффективный способ кодирования, и на моем втором проекте время производства сократилось вдвое.

Вам не нужно изучать новый язык python / ruby ​​только для того, чтобы использовать отличный фреймворк, просто нужно найти тот, который работает для вас.

1 голос
/ 17 мая 2009

Вам понадобится больше времени для первоначального использования фреймворка по тем же причинам, по которым разработчику PHP потребовалось бы больше времени, чтобы изначально использовать Ruby - вы не знакомы с ним.

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

...