Intereting Posts
Как отображать изображения из папки с помощью php – PHP пытаясь разобрать xml с URL-адреса, и он не будет работать DateTime :: diff () не зависит от часовой пояс, но всегда возвращает одинаковое значение Как написать запрос на обновление с помощью некоторой {$ variable} с примером codeigniter, result () vs. result_array () Вызов неопределенной функции mysqli_result :: num_rows () конвертировать дату datepicker в mysql date Добавление элементов в Zend_Paginator уже создан? Как использовать php для генерации случайных XML-файлов? установка выбранной опции тега select с помощью jquery значения php одного массива для ключа другого массива как сохранить несколько значений флажков в wordpress Как построить вложенные ответы в приложении, основанном на Apigility, с использованием модели на основе ZfcBase-DbMapper? Как помнить Флажок / Выбор радиокнопки в форме мулитной страницы Написание хинди-шрифтов с библиотекой GD не представляется желательным

PHP Newbies: Как написать хороший код

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

Это может быть отправной точкой:

  • Проверьте как можно больше входных параметров как можно большего количества методов (см. Assert () ).
  • Запишите все ошибки в файл журнала и визуализируйте их с помощью бэкэнда администратора (см. Set_error_handler () ).
  • Используйте подсказки типа как можно чаще (см. Подсказку типа )
  • Установите уровень ошибки в абсолютный максимум. Затем код таким образом, что не появляется ни одного предупреждения (см. Error_reporting () ).
  • Узнайте, почему и как PHP реализует и преобразует типы данных (см. Тип жонглирования и преобразования строк )

Таким образом, возникает вопрос: что лучше делать PHP newbies?

UPDATE-1

Поскольку некоторые люди рассмотрели этот вопрос, я бы предложил его снова открыть . Нажмите на соответствующую ссылку ниже.

Контрольная работа

Вы должны лучше проверить свой код, возможно, практикуя TDD . Вы можете сделать это благодаря PHPUnit . Имейте в виду три правила дяди Боба, чтобы практиковать TDD.

  1. Вам не разрешается писать какой-либо производственный код, если только он не должен выполнять прохождение теста с ошибкой.
  2. Вам не разрешается больше писать единичный тест, чем достаточно для отказа; а сбои компиляции – сбои.
  3. Вам не разрешается писать больше производственного кода, чем достаточно для прохождения одного неудачного модульного теста.

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

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

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

Безопасность

  • Изучите 10 лучших OWASP
  • Изучите PDO для предотвращения SQL-инъекций .
  • Изучите фильтр, чтобы предотвратить XSS .
  • Узнайте, как предотвратить CSRF .
  • Узнайте о http-only cookie и о том, как использовать в PHP .

Представление

  • Изучите и используйте APC

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

  • Научитесь использовать систему кэширования с распределенной памятью, такую ​​как Redis или Memcached .
  • Научитесь просто бороться с низко висящими фруктами и забыть о глупой микро-оптимизации .

Известная цитата: «Мы должны забыть о небольшой эффективности, скажем, около 97% времени: преждевременная оптимизация – корень всех злых», Дональд Кнут, 6 также ошибочно приписывается Хоуру (самим Кнутом), хотя Хоар отказывается от авторства.

  • Поймите, что PHP – это просто инструмент в вашем наборе инструментов и не лучшее решение для всех ваших проблем. Например, зависание запросов (длительный опрос) не может быть эффективно реализовано на PHP, поэтому Facebook решил реализовать чат в Erlang вместо PHP .
  • Узнайте, как выполнять трассировку ( echo , print_r ). Бесценный.
  • Проверяйте ошибки после выполнения запросов db (или лучше: создайте собственную функцию запроса, которая автоматически проверяет это. Или еще лучше: используйте некоторую библиотеку для построения запросов).
  • Знайте разницу между ресурсом результата mysql, набором результатов и строкой результата.