Переход от рамки к без рамки

Я развиваюсь на PHP примерно на 8 лет как хобби. В 2009 году я подобрал кодигнитер, и с тех пор мне не удалось создать один проект.

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

Я пробовал CodeIgniter, Kohana и Symfony. Мне нравится простота использования (и я также начал использовать доктрину как ORM, которая массивно ускорила мою работу с базой данных), но я считаю, что проекты берут меня в 3-4 раза больше времени, затраченного на чистый PHP. Мне становится скучно и разочарование, когда я не могу найти решение проблемы, которую я ранее решил в чистом PHP.

Кто-нибудь вернулся из использования фреймворков в подход без рамки. Есть ли что-то вроде базовой инфраструктуры безопасности (предотвращать XSS, помеченные фильтрами данные, предоставлять функцию очистки для использования с базами данных)? Я думаю, что что-то подобное принесло бы мне гораздо больше, чем полномасштабная структура. Я думаю, что научиться работать с фреймворками научил меня много, но я был бы счастливее работать со своим собственным кодом.

Ответ 1

Текущие версии PHP5 включают большую часть инфраструктуры безопасности, которую вы ищете как часть стандартной библиотеки.

  • Используйте filter_input_array для декларативной дезинфекции материалов, поступающих извне.
  • Доступ к базе данных через PDO с параметризованным SQL для предотвращения SQL инъекций.
  • Используйте следующие настройки PHP, чтобы сделать ваш сайт более устойчивым к фиксации сеанса и кражей файлов cookie:
    • session.use_only_cookies (предотвращает утечку токена сеанса в URL-адрес)
    • session.cookie_httponly или атрибут httponly для session_set_cookie_params() (защищает от скриптов, читающих cookie сеанса в совместимых браузерах).
    • Дополнительные предложения и код примера PHP, доступные на Wikipedia.
    • Вы также можете использовать атрибут httponly с setcookie().
  • Для новых функций HTTP и HTML5 не требуется ничего более интересного, чем базовые шаблоны, и настройка заголовка.

Если вы принимаете HTML в качестве входных данных, я рекомендую захватить HTML Purifier и называть его FILTER_CALLBACK в настройке filter_input_array. Его подход на основе безопасности на основе белых списков делает большую (и очень мощную) первую линию защиты от XSS.

Насколько я могу судить, PHP не имеет механизма защиты от подделки подпроса сайта, Конечно, Google может помочь вам в этом. OWASP Security Cheatsheets включают в себя раздел, если вы хотите реализовать свою собственную защиту.

Из любопытства я решил также начать смотреть на автономные компоненты и вот что я нашел до сих пор:

Шаблонирование:

  • Наследование шаблона PHP (регулярное наследование шаблона PHP плюс)
  • TWIG (Django/Jinja2/Liquid - синтаксис стиля, включая autoescape и sandboxing. Скомпилирует в кешированный PHP для скорости.)
  • Dwoo (более быстрый, более функциональный, PHP5-ий преемник Smarty. Включает систему совместимости для существующих шаблонов Smarty.)

Я все еще не посмотрел правильно:

  • Отправка маршрута (только RouteMap и Net_URL_Mapper до сих пор. Спасибо, cweiske.)
  • ORM (на всякий случай голый PDO - это не ваша вещь).

Ответ 2

Основываясь на вашем заявлении о том, что вы используете PHP в качестве хобби, а также в заявлении вашего профиля "Медленно попадая туда", это похоже на проблему с кривой обучения. Кажется, у вас нет глубины и широты опыта: а) понять, как работать в рамках структуры, которую накладывает структура, и б) вы, таким образом, не можете извлечь выгоду из эффективности, которую обеспечивает инфраструктура.

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

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

Ответ 3

Я не верю в рамки... Я работал во многих из них.

Причины ненависти фреймворков MVC:

1) Надувание кода, я покупаю премиальные классы, которые помогают мне в разработке. Например, классы классов или классы SQL.

2) Я считаю, что рамки MVC нелегко переносимы, особенно при использовании менеджеров зависимостей.

3) Я считаю, что вы на самом деле пишете больше кода с помощью MVC-структуры, если вам нужно использовать шаблонный набор с множеством полезных классов, которые обрабатывают аутентификацию и т.д.

4) Большинство фреймворков также обслуживают только одну или две базы данных изначально.

Я бы предложил найти структуру формы с аутентификацией и текстовым редактором и инфраструктурой sql, например, madoo + класс электронной почты...

90% вашего приложения всегда являются формами, sql и ajax CLASSES - остальные могут быть просто приобретены при необходимости

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

Ответ 4

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

Ответ 5

Zend Framework действительно супер для этого. Вы можете использовать столько или меньше, сколько хотите. Его все закодировано в php и open sourced, поэтому вы можете просто взломать его и сделать его своим. Различные компоненты не зависят от eachothers так же, как и в других рамках.

Вы можете создать простую структуру, используя некоторые компоненты из Zend без каких-либо проблем.

Проверить его!

Ответ 6

Для базовой безопасности я использую метод пользовательского фильтра, который завершает мои суперглобальности. Его синтаксис требует некоторого привыкания, но проще, чем PHP filter_var() API и не позволяет вам пропустить санитацию:

 $_GET->text("inputvar") or $_POST->name["field"]

Он также разрешает встроенное $_REQUEST- > sql() экранирование. Но для работы с базой данных продолжайте использовать параметризованный SQL или ваш DAL/ORM по выбору.

Ответ 7

Я не знаю, что вас беспокоит, но codeigniter - отличная структура. У него хорошая документация, и поскольку многие люди используют codeigniter, вы найдете всю помощь в своей документации, форуме или в stackoverflow.I работали многие фреймворки (Codeigniter, CakePHP, Zend, Spring 3.0, Ruby on Rails), но я должен сказать, что у codeigniter есть лучшая документация. В кодегитере есть много вещей, которые автоматически обрабатываются, и вам не нужно беспокоиться о безопасности, Работа над базовым PHP - это повторное изобретательство колеса. Ну, самое главное, что переход от ядра к каркасу потребует много усилий после того, как вы привыкнете к нему, вы начнете его любить. Также Ruby on rails также отличная каркас, как только вы узнаете, что вы можете использовать имеют двойную скорость.

Ответ 8

Я провел однодневное исследование ToroPHP и нашел его довольно приятным. Это минималистская структура, нацеленная на приложения RESTful. Это позволяет сохранить код на стороне сервера модульным, не имея дело с раздуванием любой структуры.

Ответ 9

Я точно знаю, как вы себя чувствуете. Я начал 4-5 лет назад в PHP (я пришел из Delphi, lol) и начал с чистого php. То, что у меня было, было "панель CMS типа", которая просто читала все поля таблиц и создавала форму. После некоторого времени я каким-то образом познакомился с PHP Framework, я сначала попробовал CakePHP, и мне не понравилось, после того, как я попал в Yii, который, на мой взгляд, довольно интуитивно понятен и прост в использовании (с его генератором Gii он довольно сильно сказывается). Я пробовал Symfony, ZF2, Laravel, Yii2-Beta и некоторые рамки для RAD, но все же я не чувствовал себя достаточно быстро, как перед фреймворками.

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

Так как этот код является полным MESS, я начал около месяца назад переформулировать мою фреймворк, теперь он использует композитор, следуя общим правилам, которые существуют между фреймовыми фреймами, является MVC.

Почему я переформулирую? Потому что, если кто-то нуждается в ремонте моего проекта, это не будет другим миром.

Итак, я понимаю вас.

"Мой совет", подготовьте свои инструменты (назовите его фреймворком, предустановленным приложением или тем, кто его называет), и используйте его так, как вам кажется, но все же следуйте некоторым общим правилам (например, MVC, "easy to module" "вещи, которые вы можете заменить в случае нарушения.