Подтвердить что ты не робот

Каковы некоторые из лучших моделей и методов разработки PHP?

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

Помимо некоторых стандартов кодирования, я также ищу стандарты проектирования и общие архитектурные практики.

Предыстория: Я начал свою карьеру с Java, и за эти годы я перешел на С#/.NET пространство. Я занимаюсь архитектурой уже более 3 лет. Просто добавьте это, чтобы дать людям некоторое представление.

4b9b3361

Ответ 1

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

Короче говоря, PHP был написан Rasmus Lerdorf, чтобы предоставить простые функции обертки для кода C, который действительно делал тяжелый подъем, чтобы он мог иметь более простой язык/синтаксис для написания шаблонов, которые должны были вести себя динамически. Рост PHP и сообщества, который его окружает, лучше всего назвать органическим. И, как и другие вещи, которые растут органично, его больше, чем немного грязный, асимметричный и совершенно неконкурентный.

Как только вы понимаете PHP и его сообщество, вам нужно включить PHP для всего, что есть, и всего, что это не так. Эта идея была лучше всего представлена ​​Терри Чаем в его статье PHP без PHP. Он специально говорит о концепции фанкового кэширования, но он фиксирует концепцию кодирования для PHP, как если бы он был PHP, а не (вставлять любимый язык здесь) лучше, чем кто-либо, кого я когда-либо видел. Другими словами, не пытайтесь сделать PHP на Java, С#, Ruby и т.д., Потому что если вы это сделаете, вы потерпите неудачу, и вы будете ненавидеть свою жизнь.

Взгляните на Как работает PHP правильно?.

Я должен сказать, что вы должны сначала, наконец, и всегда избегать тенденции большинства начинающих разработчиков PHP использовать анти-шаблон спагетти-кода. Другими словами, если вы обнаружите, что вы пишете код, содержащий sql-запросы, манипулирование данными, проверку данных и вывод html всего в одном php script, то вы делаете это неправильно.

Чтобы избежать этого, полезно узнать что-то о природе веб-ориентированных шаблонов проектирования. Это, конечно, исключает знакомство с объектно-ориентированным программированием. Но как только вы узнаете основы объектно-ориентированного программирования в PHP, изучите шаблон проектирования MVC. Вам не нужно реализовывать это точно, но использование основных идей Model-View-Controller позволит вам избежать проблемы с блоком script, которую большинство новичков имеют тенденцию создавать.

С этой точки зрения, я настоятельно рекомендую вам использовать любые фрагменты кода, которые вы найдете в Интернете, с солью. И даже если вы найдете его в книге, вам придется подумать о том, сколько лет книга. PHP как язык продвинулся довольно долго, и вы не можете просто взять образцы кода по номиналу, потому что, в зависимости от их возраста, они могут использовать обходные методы, которые были действительны в 3.x или 4.x, но просто больше не необходимо с новыми функциями.

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

Если вы хотите получить лучшее представление о шаблонах, которые реализуются в рамках фреймворков, и обычно вызывается в общем языке на SO, я бы предложил вам читать Fowler и GoF. Они расскажут об основных шаблонах дизайна, которые вы будете использовать в своих усилиях по развитию.

В частности, обратите внимание на следующее:

  • Функциональные файлы, содержащие LOTS функций. Это, скорее всего, является репрезентативной необходимостью либо помещать функции непосредственно в нужные им сценарии, либо может указывать на возможность создания еще нескольких общих функций, которые могут быть выполнены для выполнения функций нескольких высокоспецифических функций. Конечно, если вы строите сплоченные, хорошо инкапсулированные классы, вы не должны сталкиваться с этой проблемой.
  • Делают все классы. Это анти-шаблон blob и действительно противный. В этом случае вам нужно определить, где ломаются сплоченность и инкапсуляция, и использовать эти точки в качестве возможности разбить класс на несколько меньших, более обслуживаемых классов.
  • SQL-запросы, которые не используют параметризованные запросы или, по крайней мере, экранированные параметры. Очень, очень, очень плохо.
  • Любой экземпляр, где проверка не выполняется или выполняется только на стороне клиента. При разработке для Интернета единственный способ сохранить безопасность своего сайта и ваших пользователей - предположить, что все остальные - черная шляпа.
  • Внезапное навязчивое желание использовать движок шаблонов. PHP - это язык шаблонов. Убедитесь, что у вас есть четкие причины добавления другого слоя на ваш сайт перед использованием механизма шаблонов.

Для дальнейшего чтения, пожалуйста, посмотрите на следующее:

Шаблоны проектирования PHP
Защитить PHP - полезно дать вам представление о наиболее распространенных критических замечаниях.
Безопасность strip_tags и mysqlirealescapestring
Что должен знать каждый программист PHP
Как структурировать ORM
Лучший способ упорядочить иерархию классов
Основные компоненты/слои PHP-приложения
Зачем использовать Framework для PHP
Рекомендуемая подготовка по безопасности для PHP

Ответ 2

  • Используйте стандарт кодирования.
  • Используйте модульное тестирование. PHPUnit и SimpleTest являются основными системами xUnit в PHP.
  • Быть объектно-ориентированным.
  • Использовать контроль версий. Любой элемент управления версиями, просто используйте его.
  • Если применимо, используйте фреймворк. Zend, CodeIgniter, Symfony и CakePHP являются основными.
  • Если нет рамки, по крайней мере, используйте ORM. Propel и Doctrine являются основными.
  • Документ. Крупный. Используйте PHPdoc или аналогичный.

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

Ответ 3

Использовать PDO или mysqli. Используя один из них, вы получите подготовленные заявления, которые более безопасны и эффективнее. Я не могу поверить, сколько примеров и руководств я вижу, используя древние интерфейсы mysql. PDO также упростит переход на другую систему баз данных, если вы решите попробовать postgres, например.

Вы можете изучить Doctrine (http://www.doctrine-project.org). У этого есть немного его собственной кривой обучения, но обеспечивает очень удобную функциональность. Самые удобные для меня компоненты - это функции загрузки/тестирования данных таблицы. Лично я предпочитаю писать свой собственный SQL и выполнять его с PDO, а не использовать ORM в производстве.

В основном, узнайте о SQL и MySQL. http://www.kitebird.com/mysql-book/ эта книга превосходна. Аспект PHP не очень интенсивный; PDO заботится о большей части этого.

Ответ 5

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