Я занимаюсь PHP в качестве хобби около 8 лет. В 2009 году я взял в руки codeigniter и с тех пор не успел разработать ни одного проекта.
Я считаю, что это замедляет меня, пытаясь понять, как изменить его, чтобы он работал так, как я хочу, когда, если бы я работал на чистом PHP, я бы знал или мог бы быстро найти фрагмент для.
Я пробовал CodeIgniter, Kohana и Symfony. Мне нравится простота использования (и я также начал использовать доктрину в качестве ORM, что значительно ускорило мою работу с базой данных), но я считаю, что проекты отнимают у меня в 3-4 раза больше времени, чем на чистом PHP. Мне становится скучно и неприятно, когда я не могу найти решение проблемы, которую я ранее решил на чистом PHP.
Кто-нибудь вернулся от использования фреймворков к подходу без фреймворка. Есть ли что-нибудь вроде базовой структуры безопасности (предотвращение XSS, фильтрация опубликованных данных, предоставление функции очистки для использования с базами данных)? Думаю, что-то подобное принесет мне гораздо больше пользы, чем полноценный фреймворк. Думаю, обучение работе с фреймворками многому меня научило, но мне было бы лучше работать со своим собственным кодом.
источник
Ответы:
Текущие версии PHP5 включают большую часть инфраструктуры безопасности, которую вы ищете как часть стандартной библиотеки.
httponly
атрибут для session_set_cookie_params () (защищает от скриптов, читающих cookie сеанса в совместимых браузерах)httponly
атрибут с setcookie () .Если вы принимаете HTML в качестве входных данных, я рекомендую взять очиститель HTML и вызвать его через строку FILTER_CALLBACK в настройках filter_input_array. Его подход к безопасности ввода, основанный на белых списках, представляет собой отличную (и очень мощную) первую линию защиты от XSS.
Насколько я могу судить, PHP не имеет механизма защиты от подделки межсайтовых запросов , но я уверен, что Google может помочь вам в этом. В недоделках безопасности OWASP включить раздел о нем , если вы хотите реализовать свою собственную защиту.
Из любопытства я решил также начать смотреть на отдельные компоненты, и вот что я нашел на данный момент:
Шаблоны:
То, что я еще не изучил должным образом:
источник
Я не верю в фреймворки ... Я работал во многих из них.
Причины ненависти к фреймворкам MVC:
1) Раздутие кода, покупаю премиум-классы, которые помогают мне в развитии. Например, классы форм или классы SQL.
2) Я считаю, что фреймворки MVC нелегко переносить, особенно при использовании менеджеров зависимостей.
3) Я считаю, что вы действительно пишете больше кода с помощью инфраструктуры MVC, чем если бы вам пришлось использовать шаблон с множеством полезных классов, которые обрабатывают аутентификацию и т. Д.
4) Большинство фреймворков изначально обслуживают только одну или две базы данных.
Я бы предложил найти структуру формы с аутентификацией и текстовым редактором и структуру sql, такую как madoo + класс электронной почты ...
90% вашего приложения всегда составляют формы, КЛАССЫ sql и ajax - остальное можно просто получить при необходимости.
Я минималист и борюсь с идеей иметь в моем приложении код, который ничего не делает ... на всякий случай, это не работает для меня.
источник
Имея за плечами такой большой опыт, вы должны иметь свой собственный набор любимых библиотек, вручную выбирать их и создавать свою собственную простую структуру. Фреймворк или его отсутствие (и какой именно) зависит от типа проекта, ни одна перчатка не подходит всем. Поэтому я настоятельно рекомендую, если вы чувствуете, что существующие фреймворки замедляют вас, потратьте немного времени и придумайте фреймворк, который будет работать в соответствии с вашими потребностями.
источник
Основываясь на вашем заявлении о том, что вы использовали PHP в качестве хобби, а также на заявлении в вашем профиле «Постепенно добираюсь до цели», это похоже на проблему с кривой обучения. Похоже, вы не обладаете глубиной и широтой опыта, чтобы: а) понимать, как работать в рамках структуры, налагаемой фреймворком, и б) таким образом, вы не можете извлечь выгоду из эффективности, которую обеспечивает фреймворк.
Я призываю вас придерживаться этого. Вернитесь к началу с видеоуроками. Найдите и читайте код других людей, пока не поймете его. Создавайте свои проекты снизу вверх - просто начните и добавьте функциональности. Следите за форумами, пытаясь ответить на вопросы самостоятельно, прежде чем читать ответы.
Я профессионально занимаюсь программированием почти 20 лет на различных платформах, и мне все же потребовалось время, чтобы освоиться с CI. Но теперь я бы не стал возвращаться к чистому PHP (для моих собственных проектов), если бы у меня не было сайта достаточного масштаба, который выявлял бы количественно измеримые проблемы с производительностью (подумайте о Twitter).
источник
Zend Framework действительно подходит для этого. Вы можете использовать столько, сколько хотите. Он написан на php и имеет открытый исходный код, так что вы можете просто взломать его и сделать своим собственным. Различные компоненты не зависят друг от друга так сильно, как в других фреймворках.
Вы можете без проблем создать простой фреймворк, используя некоторые компоненты Zend.
Проверить это!
источник
Я точно знаю, как ты себя чувствуешь. Я начал 4-5 лет назад с PHP (я пришел из Delphi, смеется) и начал с чистого php. То, что у меня было обратно, было «панелью CMS как», которая просто читала все поля таблиц и создавала форму. Через некоторое время я каким-то образом достиг знания PHP Frameworks, я сначала попробовал CakePHP, и мне не понравилось, после чего я попал в Yii, который, на мой взгляд, довольно интуитивно понятен и прост в использовании (с его генератором Gii он довольно хорош). Я пробовал Symfony, ZF2, Laravel, Yii2-Beta и некоторые фреймворки для RAD, но все же я не чувствовал себя достаточно быстрым, как до фреймворков.
Случилось так, что я разработал свой собственный фреймворк (это было естественно, не совсем то, что я однажды проснулся и сказал: «Я собираюсь создать новый фреймворк», случилось со временем). Я знаю, что это плохая плохая практика и ход «переделывать колесо», НО теперь я разрабатываю свои проекты намного быстрее (больше, чем только PHP).
Поскольку его код - это полная MESS, около месяца назад я начал переформулировать свою структуру, теперь он использует композитор, следует общим правилам, существующим между фреймворками php, - это MVC.
Почему я переформулирую? Потому что, если кому-то понадобится отремонтировать мой проект, это не будет чем-то другим.
Итак, я вас понимаю.
Мой совет: подготовьте свои инструменты (назовите это фреймворком, предустановленным приложением или как там люди его называют) и используйте их так, как вам удобнее, но все же следуйте некоторым общим правилам (например, MVC, вещи, которые легко модулировать Вы можете заменить в случае поломки.
источник
Для базовой безопасности я использую специальный метод фильтрации, который закрывает мои суперглобальные данные . Его синтаксис требует некоторого привыкания, но он проще, чем PHP filter_var () API, и не позволяет избежать дезинфекции:
$_GET->text("inputvar") or $_POST->name["field"]
Также разрешено экранирование строки $ _REQUEST-> sql (). Но для работы с базой данных продолжайте использовать параметризованный SQL или ваш выбор DAL / ORM.
источник
Я провел однодневное исследование ToroPHP, и он мне понравился . Это минималистичный фреймворк, ориентированный на приложения RESTful. Это позволяет сохранить модульность кода на стороне сервера без необходимости иметь дело с раздуванием какой-либо инфраструктуры.
источник
Я не знаю, что вас беспокоит, но codeigniter - отличный фреймворк. У него хорошая документация, и, поскольку многие люди используют codeigniter, вы найдете всю помощь в его документации, на форуме или в stackoverflow. Я работал со многими фреймворками ( Codeigniter, CakePHP, Zend, Spring 3.0, Ruby on Rails), но я должен сказать, что codeigniter имеет лучшую документацию. В codeigiter есть много вещей, которые обрабатываются автоматически, и вам не нужно беспокоиться о безопасности. Работа над ядром PHP похожа на изобретение колеса заново. Что ж, самое главное, что переход от ядра к фреймворку потребует больших усилий, когда вы привыкнете к нему, вы начнете любить его. Кроме того, Ruby on rails также является отличным фреймворком, если вы знаете его все тонкости и вы можете иметь двойную скорость.
источник