Php проверка кода: PHP код проверка синтаксиса
Онлайн PHP Песочница, PHP Тестер
wtools.io
Инструменты
- Песочница
- PHPpopular
- Вставить код
- Генераторы
- Случайный
- Кредитные карты
- Пароль
- Число
- Список
- Выбор
- Буквы
- UUID
- IP
- MAC
- Даты
- Цвет
- Криптография
- Хеш
- HMAC hash
- MD5
- Безопасность
- Htpasswd
- CSR и Приватный Ключ
- Chmod Калькулятор
- MySQL
- База данных
- Создать БД
- Переименовать БД
- Удалить БД
- Таблица
- Создать таблицуbeta
- Копировать таблицу
- Переименовать таблицу
- Очистить таблицу
- Удалить таблицу
- База данных
- HTML
- Линк Билдер
- Массовый Генератор Анкорных Ссылок
- Google SERP симулятор
- Генератор Мета Тегов
- Twitter Card Генератор
- Open Graph Генератор
- JSON-LD Схема
- FAQPage
- BreadcrumbList
- Website
- Organization
- Выбор Цвета
- URLs Opener
- QR Код
- UTM Линк Билдер
- Случайный
- Проверки
- Валидацияpopular
- JSON
- XML
- CSS
- YAML
- Номера Кредитных Карт
- Безопасность
- Google Malware
- Калькуляторы
- AdSense Калькулятор
- HTTP
- Хедеры
- HTTP Хедеры
- HTTP Статус Код
- Gzip
- Редиректы
- Мета Теги
- Хедеры
- IP Инструменты
- Мой IP
- Местоположение IP
- Хост в IP
- IP в Хост
- Домен
- Проверка DNS
- Whois
- Имя Домена
- Возраст Домена
- Проверка Открытого Порта
- Проверка Различий
- RegEx Тестерpopular
- Подсчет Слов
- Мой User Agent
- Валидацияpopular
- Конвертеры
- Минификаторы
- HTML
- JSON
- XML
- OPML
- JavaScript
- PHP
- CSS
- SQL
- Форматировщики
- HTML
- JSON
- XML
- OPML
- CSS
- JavaScript
- PHP
- SQL
- Обфускаторы
- JavaScript
- Код, Форматы
- Тексты
- Зачеркнутый текст
- Изменить регистр
- Перевернуть текст
- Убрать Markdown
- Markdown в HTML
- JSON
- JSON Экранирование/Разэкранирование
- JSON в PHP массив
- JSON в C#
- JSON в XML
- JSON в PHP Serialize
- JSON в CSV
- JSON в TSV
- JSON в YAML
- JSON в HTML
- JSON в PDF
- JSON в SQL
- JSON в Excel
- JSON в Текст
- XML
- XML в JSON
- XML в PHP массив
- XML Экранирование/Разэкранирование
- XML в CSV
- XML в TSV
- XML в Текст
- XML в Excel
- XML в HTML
- XML в PDF
- XML в SQL
- XML в YAML
- HTML
- Очистить HTML
- HTML Экранирование/Разэкранирование
- HTML в PHP
- HTML в JS
- HTML таблица в CSV
- HTML таблица в TSV
- HTML таблица в Excel
- HTML таблица в JSON
- HTML таблица в XML
- HTML таблица в PDF
- HTML таблица в YAML
- HTML таблица в SQL
- JavaScript
- JS в PHP
- JS Экранирование/Разэкранирование
- Java
- Java Экранирование/Разэкранирование
- CSV
- CSV Экранирование/Разэкранирование
- CSV в JSON
- CSV в XML
- CSV в TSV
- CSV в HTML
- CSV в PDF
- CSV в YAML
- CSV в SQL
- CSV в Excel
- CSV в PHP массив
- Извлечь CSV колонку
- Удалить CSV колонку
- Изменить разделитель CSV колонки
- Поменять местами CSV столбцы
- TSV
- TSV Экранирование/Разэкранирование
- TSV в JSON
- TSV в XML
- TSV в HTML
- TSV в PDF
- TSV в YAML
- TSV в PHP массив
- TSV в CSV
- TSV в SQL
- TSV в Excel
- Извлечь TSV колонку
- Удалить TSV колонку
- Поменять местами TSV столбцы
- YAML
- YAML в JSON
- YAML в XML
- YAML в PHP массив
- YAML в CSV
- YAML в TSV
- SQL
- SQL Экранирование/Разэкранирование
- C#
- Csharp Экранирование/Разэкранирование
- Serialize
- Десериализовать в PHP массив
- URL Кодер/Декодер
- Base64 Кодер/Декодер
- Тексты
- Числа
- Десятичные в Двоичные
- Десятичные в Шестнадцатеричные
- Десятичные в Восьмеричные
- Двоичные в Десятичные
- Двоичные в Шестнадцатеричные
- Двоичные в Восьмеричные
- Двоичные в Текст
- Шестнадцатеричные в Десятичные
- Минификаторы
Автоматизированная проверка PHP кода при комитах / Хабр
В свое время работая в узком кругу программистов, отдельными задачами и даже проектам, мы не задумывались о проблемах связанными с текучкой кадров. Точнее думать — думали, но ни каких мер не применяли, да и в целом коллектив был сплоченный никто не уходил и никого «не уходили». С ростом внутренних проектов и корпоративных клиентов, штат начал разрастаться и казалось, что все отлично — нас больше, значит будем больше успевать и делать, но не тут то было. Мы начали тратить кучу времени на “бесполезные” обсуждения, проверки, излишние проектирование и т.д, больше всего раздражает — это проверка кода. И тут я начал думать, что “мудрые и древние” наверняка решали эти проблемы с сотнями, тысячами программистов, неужели мы не справимся? Я решил провести эксперимент, под названием “автоматизированная проверка стиля кода при комитах”. Для большинства из Вас это не новость и наверняка вы этим пользуетесь, но поделиться опытом внедрения думаю, не будет лишним.
Воскресения, 3:40
В это ранние время, сидя за работой и сделав перерыв на чай, я задумался, завтра нужно ехать в офис и снова утром тратить 2 — 3 часа на проверку кода, потом еще 2 часа на постановку задач, итого 5 часов, потом может быть поработать 2 часа и ехать домой. И понятное дело, что задачи которые поставили, я не могу решить за оставшиеся 2 — 3 часа, а решая эти проблемы в неурочное время могу разрушить свою семью и т.д. Так дальше не может продолжаться. В первую очередь я программер, а не «цербер» и нужно автоматизировать процесс проверки, это если не снимет все время проверки, то хотя бы сократит.
Не люблю изобретать колесо, потому сразу обратился к поисковику и задал запрос: «checking coding standards PHP», просматривая первый десяток результатов обратил внимание на часто встречающийся название «PHP_Codesniffer» и задав одноименный запрос — увидел, что это PEAR библиотека для автоматизированной проверки стиля кода, как говориться -«то что, доктор прописал!» и надежности разработчиков сомневаться не приходиться, что благотворно повлияет при возможном глобальном внедрении. Установив на сервер библиотеку:
pear install PHP_CodeSniffer-1.3.0RC1
Предполагаться, что у вас установлен дистрибутив PEAR на сервере. После установки станет доступна новая служба phpcs:
phpcs --standard=Zend your.php
Не много поигравшись, меня порадовало, что уже данное решение поддерживает многие стандарты: Squiz, MySource, PHPCS, Zend, PEAR. Меня это устраивало, так как мы утвердили в свое время, что будем кодить согласно стандарту Zend.
Про затачивания это библиотеки можно почитать в официально документации
Воскресение, 4:00
Окрыленный своей находкой и быстрым ее “поднятием”, сон отступил. Первая задача была решена, теперь осталось подключить это решения к контролю версий при комите. В документации к PHP_CodeSniffer есть раздел посвященный описанию интеграции с SVN — это было хорошо, так как у нас SVN любят использовать, но я использую GIT и решил писать свой хук для git и тут думаю: “не верю, что на PEARовское решения нет описания интеграции c GIT”. И снова обратившись к поисковику нашел готовое решение phpcs-pre-commit:
git clone https://github.com/s0enke/git-hooks.git
Для интеграции этого хука нужно положить файлик pre-commit в папку hooks вашего git репозитория (.git/hooks). Кто интересовался git хуками — тот в теме.
И последние проверка коммита мне вывелась таблица с описание ошибок не соблюдения стиля. Не буду приводить пример того, как отображает таблицу ошибок phpcs, да и зачем. В .git/hooks/pre-commit нужно указать какой стиль вы хотите использовать:
PHPCS_CODING_STANDARD=Zend
Также укажите расширения файлов которые необходимо проверять:
PHPCS_FILE_PATTERN="\.(php|phtml)$"
Если при комите вам выдает ошибку:error: cannot run .git/hooks/pre-commit: No such file or directory
Это значит, что указан не правильный путь к bash, измените его в .git/hooks/pre-commit
Задача в целом решена, плюс CodeSniffer в том, что с ним обязанность проверять “юношеские” ошибки, которые свойственны всем — отпадает. И главный плюс, что заставит “молодых” просматривать код как минимум при поиски ошибки стиля и возможно проведения минимального рефакторинга.
Теперь можно в понедельник ехать на работу и рассказать об нововведениях. Если это поможет нам, то можно будет идти лоббировать интеграцию данного решения для всех.
Понедельник, 17:00
В целом все было отлично, но проект на котором решил тестировать, довольно таки древний и некоторые моменты привести к стандарту Zend было накладно, например верблюжий стиль переменных. И пришлось создать свой стандарт для PHP_Codesniffer. Сами описания проверки стиля лежат в:
PEAR_PATH/PHP/CodeSniffer/Standards/
PEAR_PATH — это путь к папке с PEAR библиотеками у нас на сервере они располагаются в /usr/local/share/pear/.
Для создания своего стиля создайте папку YOUR_STYLE в PEAR_PATH/PHP/CodeSniffer/Standards/.
В паке вашего стиля нужно создать ruleset.xml. Про формат этого файла можно почитать тут, опишу только-то, что пригодилось мне.
Связи с тем, что требования кодированию максимально приближены к Zend стилю, просто скопировал содержание с PEAR_PATH/PHP/CodeSniffer/Standards/Zend/ruleset.xml:
<?xml version="1.0"?>
<ruleset name="Zend">
<description>A coding standard based on an early Zend Framework coding standard. Note that this standard is out of date.</description><!-- Include some sniffs from all around the place -->
<rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
<rule ref="Generic.Functions.OpeningFunctionBraceBsdAllman"/>
<rule ref="Generic.PHP.DisallowShortOpenTag"/>
<rule ref="Generic.WhiteSpace.DisallowTabIndent"/>
<rule ref="PEAR.Classes.ClassDeclaration"/>
<rule ref="PEAR.ControlStructures.ControlSignature"/>
<rule ref="PEAR.Functions.FunctionCallSignature"/>
<rule ref="PEAR.Functions.ValidDefaultValue"/>
<rule ref="PEAR.WhiteSpace.ScopeClosingBrace"/>
<rule ref="Squiz.Functions.GlobalFunction"/><!-- Lines can be 80 chars long, show errors at 120 chars -->
<rule ref="Generic.Files.LineLength">
<properties>
<property name="lineLimit" value="120"/>
<property name="absoluteLineLimit" value="140"/>
</properties>
</rule><!-- Use Unix newlines -->
<rule ref="Generic.Files.LineEndings">
<properties>
<property name="eolChar" value="\n"/>
</properties>
</rule>
</ruleset>
В теге ruleset замените имя на свое имя YOUR_STYLE и добавляю одно правило с Zend:
<rule ref="Zend.Debug.CodeAnalyzer"/>
Для отключения верблюжьего стиля копирую:
PEAR_PATH/PHP/CodeSniffer/Standards/Zend/Sniffs/NamingConventions/ValidVariableNameSniff.php в PEAR_PATH/PHP/CodeSniffer/Standards/YOUR_STYLE/Sniffs/NamingConventions/ValidVariableNameSniff.php. Переименовав класс с Zend_Sniffs_NamingConventions_ValidVariableNameSniff на YOUR_STYLE_Sniffs_NamingConventions_ValidVariableNameSniff, добавил:
public $isCheckCamelCaps;
И добавил везде проверку на этот “флажок”. Теперь если нужно будет его переопределить — это можно будет сделать из ruleset.xml:
<rule ref="YOUR_STYLE.NamingConventions.ValidVariableName">
<properties>
<property name="isCheckCamelCaps" value="1"/>
</properties>
</rule>
Вторник, 19:00
Повсплывало много моментов на которые свое время закрывались глаза, но пришло время их приводить в порядок! Самой полезной проверкой стиля кода оказалась проверка на длину строки кода, и благодаря ее было зарефакторено много нечитабельных мест.
Правда столкнулись с проблемой с русскими комментариями, код весь хранится в UTF-8, а CodeSniffer длину строки проверяет стандартным strlen и логично что строки увеличивались в два раза. Не стал я заморачиваться на переопределения класса, что было бы правильнее, а просто в PEAR_PATH/PHP/CodeSniffer/Standards/Generic/Sniffs/Files/LineLengthSniff.php добавил:
public $charset = 'UTF-8';
и заменил strlen, на:
mb_strlen($lineContent, $this->charset)
Суббота
Прошла нелегкая неделя с CodeSniffer, и вот какие плюсы:
- Снимается время и нервы на проверку стиля кода;
- при исправление ошибок длины строк, пересматриваешь логику кода, что благотворно влияет на читабельность кода и проведения рефакторинга мутной логики. Также снимается надобность объяснять когда одно-строчные if хорошо, а когда плохо;
- снимается обязанность следить за документацией стиля кодирования;
- поддерживает проверку всех популярных стандартов кодинга.
Минусы:
- Неудобно внедрять в “исторические” проекты или чужие, можно потратить несколько дней, а то и недель на наведения икебаны;
- не удобно внедрять с контроль версиями, так как без напильника не подымешь, что для GIT, что для SVN. Особенно когда проектов несколько десятков и не для всех одинаковый стиль кодинга.
PHP проверка на тип данных
В этой статье вы узнаете как и зачем проверяют на тип данных (как правило в переменной) в PHP.
Как проверить тип переменной в PHP
В ваших скриптах может возникнуть необходимость на дополнительную проверку и иногда, это проверка на какой-то определенный тип. Чаще всего, смотрим, есть ли хоть какого-то значение в переменной:
<? if (!empty($var)): // code here endif;
В этом языке программирования типизацию называют динамической (также, можно встретить термин «слабая типизация«). Это означает, что строка может стать числом, если мы применим оператор сложения.
За это, кстати говоря, у PHP так много ненавистников 🙂 .
Вернемся к нашей теме. Чтобы проверить на типы данных существуют следующие проверки:
if (is_array($arr)) { // переменная является массивом } /* is_bool() - Проверяем, является ли переменная булевой is_int() - Проверяем, является ли переменная целым числом is_numeric() - Проверяем, является ли переменная числом или строкой, содержащей число is_float() - Проверим, является ли переменная числом с плавающей точкой is_string() - Проверим, является ли переменная строкой is_object() - Проверим, является ли переменная объектом */
Можем проверить на массив, на тип булево (true или false), число с плавающей точкой, обычное число, строку и объект.
Эти проверки помогут вам в ваших скриптах. Например, стоит задача: если приходит целое число, то мы ничего не делаем, а если с плавающей точкой то округляем в какую-то сторону на «столько-то» знаков.
Также, бывают случаи, когда в переменную может записываться как число, так и массив, и нам нужно предусмотреть все эти варианты.
Есть также проверка и для NULL:
is_null()
Вот такие вот простые и полезные вещи могут улучшить наш код 🙂
Проверка данных регулярными выражениями в PHP
Сборник регулярных выражений с примерами на PHP для проверки данных из полей форм.
1
Проверка чисел
$text = '1';
if (preg_match("/^\d+$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
Числа с плавающей точкой (разделитель точка):
$text = '-1.0';
if (preg_match("/^\-?\d+(\.\d{0,})?$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
2
Проверка даты по формату
Формат DD.MM.YYYY
$text = '02.12.2018';
if (preg_match("/^(0[1-9]|[12][0-9]|3[01])[\.](0[1-9]|1[012])[\.](19|20)\d\d$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
Формат MySQL YYYY-MM-DD
$text = '2018-04-02';
if (preg_match("/^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
3
Проверка номера телефона
Ориентировано на российские мобильные + городские с кодом из 3 цифр.
$text = '+7(495)000-00-00';
if (preg_match("/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
4
$text = '[email protected]';
if (preg_match("/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
5
Логин
Латинские буквы, цифры, -
и _
.
$text = 'admin-1';
if (preg_match("/^[a-z0-9_-]{2,20}$/i", $text)) {
echo 'yes';
} else {
echo 'no';
}
6
Проверка md5-хэша
$text = 'ca040cb5d6c2ba8909417ef6b8810e2e';
if (preg_match("/^[a-f0-9]{32}$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
7
Цвета
Шестнадцатеричные коды цветов #FFF
и #FFFFFF
.
$text = '#fff';
if (preg_match("/^#(?:(?:[a-fd]{3}){1,2})$/i", $text)) {
echo 'yes';
} else {
echo 'no';
}
8
IP адреса
IPv4 адрес:
$text = '192.168.0.1';
if (preg_match("/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/", $text)) {
echo 'yes';
} else {
echo 'no';
}
IPv6 адрес:
$text = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501';
if (preg_match("/((^|:)([0-9a-fA-F]{0,4})){1,8}$/i", $text)) {
echo 'yes';
} else {
echo 'no';
}
PHP: Регулярные выражения — проверка данных
Сборник основных шаблонов регулярных выражений на PHP для проверки данных.
Проверка набора из латинских букв и цифр
Регулярное выражение для проверки набора только из латинских букв и цифр:
$pattern = '/^[a-z0-9]+$/i'; $var = 'String123'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Если необходимо добавить в набор некоторые символы:
// использовать тире $pattern = '/^[a-z0-9-]+$/i'; $var = 'String-123'; // использовать знак подчёркивания $pattern = '/^[a-z0-9-_]+$/i'; $var = 'String-1_23'; // использовать точку $pattern = '/^[a-z0-9-_.]+$/i'; $var = 'String-1_23.end'; // использовать пробел $pattern = '/^[a-z0-9-_. ]+$/i'; $var = 'String-1_23.end ps...';
Проверка на кириллицу и цифры
Регулярное выражение для проверки набора только из букв кириллицы и цифр:
$pattern = '/^[а-яё0-9]+$/iu'; $var = 'Строка123'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка на число
Регулярное выражение для проверки данных на целое число:
$pattern = '/^\d+$/'; $var = 123; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
$pattern = '/^[0-9]*[.,][0-9]+$/'; $var = 123.45; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; } // Если нужно, чтобы пропускал и целые числа $pattern = '/^[0-9]*[.,]?[0-9]+$/';
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):
$text = 'Login_123-45'; if (preg_match("/^[a-z0-9-_]{2,20}$/i", $text)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка Email
Регулярное выражение для проверки Email:
$pattern = '/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/'; $var = '[email protected]'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка номера телефона
Регулярное выражение для проверки номера телефона:
$pattern = '/^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$/'; $var = '+7(982)000-00-00'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка даты по формату
Формат DD.MM.YYYY
:
$pattern = '/^(0[1-9]|[12][0-9]|3[01])[\.](0[1-9]|1[012])[\.](19|20)\d\d$/'; $var = '10.12.2019'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Формат MySQL YYYY-MM-DD
:
$pattern = '/^[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])$/'; $var = '2019-12-10'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка md5-хэша
Регулярное выражение для проверки на корректность md5-хэша:
$pattern = '/^[a-f0-9]{32}$/'; $var = '341be97d9aff90c9978347f66f945e77'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка IP адресов
Регулярное выражение для проверки IPv4
адреса:
$pattern = '/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/'; $var = '192.168.0.1'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка IPv6
адреса:
$pattern = '/((^|:)([0-9a-fA-F]{0,4})){1,8}$/i'; $var = '2001:DB8:3C4D:7777:260:3EFF:FE15:9501'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка доменного имени
Регулярное выражение для проверки на корректность доменного имени сайта:
$pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/'; $var = 'https://prowebmastering.ru'; if (preg_match($pattern, $var)) { echo 'Проверка пройдена успешно!'; } else { echo 'Проверка не пройдена!'; }
Проверка существования или валидность email на PHP
Автор статьи: admin
В этой статье вы прочитаете как делается проверка существования email на языке программирования PHP.
Также нужно сказать, что для этой цели мы сначала покажем как это делается на чистом PHP а потом будим использовать специальную библиотеку, которая называется MailChecker.
PHP проверка email:
Для показа как происходит проверка email на валидность на чистом PHP, нужна функция filter_var()
, вот код программы.
$email_a = ‘[email protected]’; // Email $email_b = ‘myemail.com’; // Домен
// Проверка $email_a, если это не email if (!filter_var($email_a, FILTER_VALIDATE_EMAIL)) { // То выводим надпись, что это не email echo $email_a . » это не email»; }
// Проверка $email_b, если это не email if (!filter_var($email_b, FILTER_VALIDATE_EMAIL)) { // То выводим надпись, что это не email echo $email_b . » это не email»; } |
Код тут очень простой, самое главное, это функция filter_var()
, первым параметрам она принимает переменную которую нам нужно проверить, вторим идёт значение, на что нам нужно проверить, в нашем случае это FILTER_VALIDATE_EMAIL
, которая проверяет на Email, если true
, то значит, что переменная правда Email иначе будет возвращать false
.
Если вам интересна эта функция, то зайдите по этой ссылки, там более подробно про неё написано.
Идёт проверка, на то, что переменная $email_a
, email, если это не верно то это выводится на экран, со второй проверкой точно также, вот результат.
Как видите домен не Email и всё правильно сработало.
PHP библиотека MailChecker:
Теперь перейдём к библиотеки MailChecker, как её подключить и работать с ней.
Подключение MailChecker:
Но что бы работать с этой библиотекой, сначала нужно скачать и подключить её, что бы её скачать заходим в GitHub проекта и от туда скачиваем ZIP архив.
Для этого нужно нажать кнопку «Clone or download» и там же нажать «Download ZIP», после открываем архив и заходим в нём по пути «mailchecker-master/platform/php», от туда файл MailChecker.php перемешаем в папку с вашем проектом.
Ну и подключаем этот файл в наш код.
include «./libs/MailChecker.php»; |
Также вы можете скачать библиотеку через composer, вот так.
composer require fgribreau/mailchecker |
На этом с подключением закончили.
Работа с MailChecker:
Теперь перейдём к работе с этой библиотекой, это очень просто, вот код.
$email_a = ‘[email protected]’; // Email $email_b = ‘myemail.com’; // Домен
// Проверка email if(!MailChecker::isValid($email_a)){ // Если $email_a не Email, то выводим ошибку echo $email_a . ‘ не Email’; }
// Проверка email if(!MailChecker::isValid($email_b)){ // Если $email_b не Email, то выводим ошибку echo $email_b . ‘ не Email’; } |
Вот совсем не большой код, в начале идёт проверка, на то, что строка действительно email, это делается за счёт MailChecker::isValid($email)
, если $email
действительно email, то возвращается true
иначе false
.
Если строка не email, то выводится надпись с этим подтверждением, проверка второй строки точно также происходит, вот результат.
Как видите этот результат точно такой же как и в первый раз, когда использовали чистый PHP.
Вывод:
В этой статье было показана как происходит проверка существования email на PHP или как можно ещё сказать на валидность, и сделали это двумя способами, первый через чистый PHP, второй, использовали библиотеку MailChecker.
Также, если вам что то, тут не понятно, то посмотрите наш учебник по PHP.
Подписываетесь на соц-сети:
Оценка:
(Пока оценок нет)
Загрузка…
Также рекомендую:
Как настроить VS Code для разработки на PHP – Hexlet Guides
Содержание
- Основные возможности
- EditorConfig for VS Code
- PHP Intelephense
- PHP Debug
- PHP Sniffer
- Semicolon Insertion Shortcut
- Extra
Visual Studio Code – популярный бесплатный редактор кода. Может с легкостью конкурировать с PhpStorm, ведь он бесплатный и с открытым исходным кодом
Так может выглядеть интерфейс редактора после установки расширений
Основные возможности
- отладчик кода
- встроенный терминал
- удобные инструменты для работы с Git
- подсветка синтаксиса для множества популярных языков и файловых форматов
- удобная навигация
- встроенный предпросмотр Markdown
- умное автодополнение
- встроенный пакетный менеджер
VS Code имеет большое количество расширений для разработчика. Для установки нового пакета зайдите во вкладку “Extensions”, введите название пакета в строке поиска, нажмите кнопку “Install”.
EditorConfig for VS Code
EditorConfig — это конфигурационный файл и набор расширений к большому количеству редакторов кода. Он подхватывает настройки из файла .editorconfig
, который, как правило, размещается в корне проекта.
Расширение автоматически настроит отступы и перевод строк единообразно для всех разработчиков, использующих его. PHP код чаще всего выполняется на *nix системах, поэтому необходимо использовать стандарт.
Ниже приводится пример файла .editorconfig
, который используется в Laravel:
root = true
# Глобальные настройки, которые будут записаны для всех файлов.
[*]
charset = utf-8
# На Unix системах используется lf для перевода строки.
# Это также требование стандарта PSR.
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true
# Можно задать индивидуальные настройки как для типов файлов,
# так и отдельных файлов по имени.
[*.md]
trim_trailing_whitespace = false
[*.{yml,vue,js,html}]
indent_size = 2
[{package.json,.travis.yml}]
indent_style = space
indent_size = 2
[lib/**.js]
indent_style = space
indent_size = 2
PHP Intelephense
В редакторе уже есть поддержка синтаксиса и подсказок стандартных функций языка. Но без специального дополнения редактор не будет подсказывать пользовательские функции из других частей проекта. Поэтому для поддержки автодополнения, анализа кода, перехода к месту, где создана функция/класс/переменная (с помощью шортката Alt+Click
), используется дополнение PHP Intelephense
Чтобы подсказки не дублировались необходимо отключить встроенную в редактор поддержку кода для PHP: Extensions -> Search @builtin php -> PHP Language Features -> Disable
PHP Debug
При разработке может возникнуть ситуация, когда простых функций отладки и логирования становится недостаточно. Тогда может помочь специальный инструмент — Дебаггер.
Для PHP есть расширение xdebug, которое позволяет расставить точки останова и посмотреть окружение в предполагаемом месте ошибки, выполняя код поэтапно либо до следующей точки.
Чтобы воспользоваться PHP Debug, необходимо установить сам XDebug, без него расширение для редактора работать не будет. Установив расширение, необходимо добавить конфигурацию для PHP в разделе Debug
. После выбора языка в корне проекта будет создан файл .vscode/launch.json
с задачами для Дебаггера. Расширение создаст файл со стандартными параметрами.
Для того, чтобы XDebug общался с нашим дебаггером, необходимо добавить настройки в файл конфигурации php.
Чтобы найти этот файл выполните в терминале команду php --ini
или запустите веб-сервер с кодом phpinfo()
.
В Linux PHP подгружает не только основной файл, но и файл из этой директории. Например, на Ubuntu путь к директории конфигурационных файлов для PHP может быть таким — /etc/php/7.3/cli/conf.d/
.
В ней создаём файл с необходимыми правами (требуются root права):
$ sudo touch /etc/php/7.3/cli/conf.d/99-local.ini
$ sudo chmod 777 /etc/php/7.3/cli/conf.d/99-local.ini
Содержимое файла:
xdebug.remote_enable=1
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000 ; Порт, который мы указали в launch.json
xdebug.idekey=code
xdebug.remote_autostart=1
Это настройки для локальной разработки, когда проект разрабатывается и запускается на одном компьютере, например на вашей рабочей машине
PHP Sniffer
В языках программирования есть понятие стиль кодирования. Но не все разработчики знают об этом. Программа, которая отвечает за проверку на соответствие стандартам, называется линтер. В PHP приняты стандарты под названием PSR. Нас интересуют стандарты PSR-1 и PSR-12. Именно эти д
PHP Code Quality Tools для проверки и улучшения вашего кода
Они были написаны Дейвом, вашим коллегой-разработчиком.
Классы полны ошибок форматирования, плохого отступа и странных однобуквенных переменных. Существует так много зависимостей, что вам нужно на несколько минут прокрутить вниз, чтобы избежать раздутого конструктора.
Shacking, вы открываете модульные тесты, чтобы понять, как они должны работать… но их не существует. Ужас и несчастье!
Вы можете попросить Дэйва подойти к вашему столу, кричать на него, что вы никогда не видели такого дерьмового кода, проклиная его и его семью на многие поколения.
Однако, поскольку вы такой уважительный человек, вы знаете, что это не лучшее решение. Обучение вместо обвинений всегда дает лучшие результаты.
Со спокойствием, достойным дзенского монаха, вы сначала исправите ошибку, сводящую с ума вашего босса с помощью Дэйва.
Затем вы решаете представить своей команде некоторые инструменты для повышения качества кода.
У вас есть хороший подход, дорогой читатель: инструменты качества кода необходимы для написания надежного и безошибочного кода PHP. Это может помочь вашим коллегам обнаружить дефекты в кодовой базе и научить их некоторым ключевым понятиям.
Не забывайте, однако, что советы и данные, которые они могут предоставить, подходят не везде. Как часто, это во многом зависит от контекста: большая ли ваша кодовая база? Есть ли веская причина, по которой цикломатическая сложность для некоторых функций высока?
Если вам уже наскучила эта статья и вы просто хотите увидеть простой список инструментов PHP, вы можете сразу перейти к списку ссылок в конце.
И последнее перед тем, как погрузиться в подробности: инструменты, представленные в этой статье, анализируют или форматируют ваш код, я не буду говорить о тестировании.
Всегда есть несколько способов установить описанные здесь инструменты.
Я лично предпочитаю использовать глобальную установку пакета композитора с использованием cgr, чтобы избежать проблем с зависимостью от глобальной области видимости.
В большинстве случаев вы также можете использовать формат PHAR.
Вы можете обратиться к документации каждого инструмента, чтобы найти все возможные способы их установки.
В вашем терминале
В терминале можно использовать все инструменты. В большинстве случаев вам просто нужно передать путь к базе кода в качестве аргумента и вуаля!
Я описываю этот процесс для каждого инструмента в этой статье.
Советую вызывать инструменты из основной папки вашего проекта. Во всех примерах предполагается, что ваша кодовая база находится в папке src
.
В Вим / Неовим
Вы можете легко настроить в Vim все инструменты, которые захотите, и позволить им анализировать ваши открытые файлы.
С помощью плагина neomake вы можете легко подключить PHPMD, PHPSTAN и PHPCS к Vim. В желобе будут отображаться предупреждения и ошибки. Очень удобно!
Вы даже можете создать своих собственных производителей, чтобы использовать все инструменты качества PHP-кода, которые вы хотите.В качестве справки вы можете обратиться к моему конфигурационному файлу neomake.
В PHPStorm
Поскольку я больше не использую PhpStorm, я не буду объяснять, как установить эти инструменты в IDE.
Тем не менее, здесь есть ссылки на документацию Jetbrain:
Я бы не написал ни строчки кода без следующих плагинов.
Они правильно отформатируют ваш код и дадут вам ценный совет.
PHP-CS-Fixer (Исправление стандартов кодирования PHP)
Начнем с причины долгих встреч, ненависти и побуждений к убийству: правил форматирования кода.Прекрасный пример закона тривиальности Паркинсона.
Лично у меня нет никаких предпочтений относительно форматирования кода. Что меня волнует, так это иметь согласованный :
- Легче читать
- Это освобождает ваш разум для более важных вопросов
PHP-CS-fixer — это простой инструмент, который позволяет автоматически форматировать ваш код. По умолчанию используются правила PSR-1 и PSR-2, но вы можете определить свои собственные правила форматирования.
С помощью следующей команды вы можете отформатировать всю кодовую базу:
$ php-cs-fixer fix src /
У вас также есть возможность предварительно просмотреть изменения, не применяя их (опция --diff
), или вы можете уточнить правила ( --rules
option), которые хотите использовать.
PHPCS (PHP CodeSniffer)
PHP CodeSniffer — очень хороший инструмент для вывода нарушений стандартов кодирования, которые есть в вашей кодовой базе. Можно использовать два сценария командной строки: phpcs
для вывода фактических недостатков стандартов кодирования и phpcbf, который может исправить некоторые ошибки за вас.
Вы можете ввести, например:
$ phpcs src /
Результат будет выглядеть так:
ФАЙЛ: / home / superCoolUser / mySuperProject / src / Model / SuperModel.php
-------------------------------------------------- ----------------------------------------
НАЙДЕНО 6 ОШИБОК И 1 ПРЕДУПРЕЖДЕНИЕ НА 7 ЛИНИЯХ
-------------------------------------------------- ----------------------------------------
2 | ОШИБКА | [] Отсутствует комментарий к документу файла
14 | ОШИБКА | [] В комментарии класса отсутствует тег @category
20 | ОШИБКА | [] Отсутствует комментарий к функции __construct ()
34 | ВНИМАНИЕ | [] Длина строки превышает 85 символов; содержит 93 символа
57 | ОШИБКА | [x] Открывающая скобка при вызове многострочной функции должна быть последним содержимым в строке.
60 | ОШИБКА | [] Ожидается "если (...) {\ n "; найдено" if (...) {\ n "
63 | ОШИБКА | [x] Закрывающая скобка при вызове многострочной функции должна находиться в отдельной строке.
-------------------------------------------------- --------------------------
PHPCBF МОЖЕТ ИСПРАВИТЬ 2 ОТМЕЧЕННЫХ НАРУШЕНИЯ SNIFF АВТОМАТИЧЕСКИ
-------------------------------------------------- --------------------------
Как видите, phpcbf может автоматически исправить две ошибки, набрав:
$ phpcbf src / Модель / SuperModel.php
Вы можете использовать стандарт кодирования по умолчанию, поставляемый с PHP Code Sniffer, или можете легко реализовать свой собственный.
PHPMD (Детектор сообщений PHP)
PHPMD отобразит возможные ошибки и неправильное использование языка в вашем приложении.
Вот как творить чудеса:
$ phpmd src / текст чистый код
PHPMD просканирует каталог и подкаталоги вашего проекта и выведет в виде обычного текста найденные ошибки. Вы также можете создать вывод html
или xml
, заменив параметр text
в командной строке выше.
В этом примере мы используем набор правил cleancode
, но вы, очевидно, можете изменить его или создать свой собственный.
Вы хотите вывести ошибки в файл? Легко:
$ phpmd src / html cleancode --reportfile ~ / phpmd.html
Если вы выберете xml
в качестве вывода, у вас будет дополнительная информация о наборе правил, а именно:
<нарушение beginline = "61" endline = "61" rule = "BooleanArgumentFlag" ruleset = "Чистые правила кода" externalInfoUrl = "http: // phpmd.org / rules / cleancode.html # booleanargumentflag "priority =" 1 ">
Метод notThatCoolMethod имеет аргумент логического флага $ badBoolean, что является определенным признаком нарушения принципа единой ответственности.
<нарушение beginline = "102" endline = "104" rule = "ElseExpression" ruleset = "Чистые правила кода" externalInfoUrl = "http://phpmd.org/rules/cleancode.html#elseexpression" priority = "1">
Метод superMethod использует выражение else. В остальном нет необходимости, и вы можете упростить код, чтобы работать без него.
Например, вы можете увидеть приоритет нарушенных правил. Затем вы можете уточнить свой результат, используя, например, параметр --minimumpriority
.
Вкратце: PHPMD — отличный инструмент, который я настоятельно рекомендую вам использовать. Он обнаружит множество потенциальных проблем в вашем коде и сэкономит вам часы отладки.
Ваш босс будет так счастлив, что увеличит вам зарплату на 200%. Гарантированно.
PHPStan (Инструмент статического анализа PHP)
PHPStan — еще один инструмент, который стоит иметь в вашем наборе инструментов.Целью является? Ошибки вывода, такие как скомпилированный язык, будут отображаться во время компиляции. Это хорошее дополнение к PHPMD.
Вы можете запустить его следующим образом:
$ phpstan analysis src / --level = 7
Вы можете уточнить строгость PHPStan с опцией уровня. Минимальный уровень 0
, максимальный уровень 7
.
Чтобы дать вам представление, пример вывода:
------ ------------------------------------------ -----------------------------
Строка src / MySuperModels / RandomModel
------ -------------------------------------------- ---------------------------
78 Созданный экземпляр класса App \ Service \ Api \ InvalidArgumentException не найден.82 Созданный экземпляр класса App \ Service \ Api \ InvalidArgumentException не найден.
93 Метод App \ Service \ Api \ Client \ ClientInterface :: post () вызывается с 3 параметрами, 4 обязательных.
103 Приведение в строку чего-то, что уже является струной.
------ -------------------------------------------- ---------------------------
Как и другие инструменты, вы можете создавать свои собственные правила.
PHPUnit и метрика CRAP
Эта статья не о модульном тестировании. Я полагаю, вы знаете, что модульное тестирование вашего кода намного важнее всего, что представлено в этой статье.
PHPUnit также может отображать очень интересную информацию: метрику CRAP.
CRAP использует цикломатическую сложность с покрытием кода вашего кода для отображения того, что может быть кодом, который трудно изменить в вашем приложении.
Чем выше индекс CRAP, тем больше ваш код будет считаться «дрянным».
Действительно, если ваш код имеет большую сложность, но низкий охват кода, вы можете ожидать, что он будет вызывать досадные ошибки каждый раз, когда вы его изменяете. Вы даже не заметите, пока начальник не накричит на вас.Ожидайте, что Дэйв, ваш коллега-разработчик, попытается еще больше подтолкнуть вас, чтобы он сиял в тени вашего стыда.
Для отображения показателей CRAP необходимо создать отчет о покрытии кода:
$ phpunit phpunit --coverage-html ./tempFolder
Это создаст файлы HTML в каталоге tempFolder
. Вы можете открыть там index.html
и щелкнуть ссылку на панели инструментов, чтобы наконец рассмотреть индикатор CRAP.
Путешествие в центр CRAP
Однако помните: покрытие кода не означает, что ваш код хорошо протестирован.Это совсем другая тема, которую я оставлю для другой статьи.
Более глубокая проверка кода PHP
Я использую следующие инструменты, чтобы убедиться, что проект, над которым я работаю, идет в правильном направлении. Они могут помочь вам увидеть общую картину.
Они также могут стать настоящим спасителем, когда вам нужно работать с неизвестным (устаревшим) приложением. Они могут быть большим подспорьем при рефакторинге.
PhpLoc
PhpLoc — очень хороший инструмент, чтобы получить представление о размере проекта.
Вы можете выполнить на своей базе кода:
$ phploc SRC
Это выведет что-то вроде этого:
Размер
Строки кода (LOC) 61
Строки комментариев кода (CLOC) 0 (0,00%)
Строки кода без комментариев (NCLOC) 61 (100,00%)
Логические строки кода (LLOC) 23 (37,70%)
17 классы (73,91%)
Средняя продолжительность класса 17
Минимальная продолжительность класса 17
Максимальная длина класса 17
Средняя длина метода 3
Минимальная длина метода 1
Максимальная длина метода 7
Функции 0 (0.00%)
Средняя длина функции 0
Не в классах или функциях 6 (26,09%)
Цикломатическая сложность
Средняя сложность на LLOC 0,26
Средняя сложность в классе 7.00
Минимальная сложность класса 7.00
Максимальная сложность класса 7.00
Средняя сложность метода 2.20
Минимальная сложность метода 1.00
Максимальная сложность метода 4.00
Зависимости
Глобальный доступ 0
Глобальные константы 0 (0,00%)
Глобальные переменные 0 (0,00%)
Суперглобальные переменные 0 (0,00%)
Доступ к атрибутам 7
Нестатический 7 (100,00%)
Статический 0 (0,00%)
Вызов методов 14
Нестатический 14 (100.00%)
Статический 0 (0,00%)
Структура
Пространства имен 1
Интерфейсы 0
Черты характера 0
Классы 1
Абстрактные классы 0 (0,00%)
Бетон класса 1 (100,00%)
Методы 5
Сфера
Нестатические методы 5 (100.00%)
Статические методы 0 (0,00%)
Видимость
Публичные методы 3 (60,00%)
Непубличные методы 2 (40,00%)
Функции 0
Именованные функции 0 (0,00%)
Анонимные функции 0 (0,00%)
Константы 1
Глобальные константы 0 (0.00%)
Константы класса 1 (100,00%)
Эти данные уже могут дать вам некоторые подсказки о проекте:
-
Строки комментариев кода
никогда не годятся. Избавьтесь от этого, не задумываясь. - Слишком высокая
Средняя Длина класса
обычно тоже не годится. Разделите классы богов. - Слишком много
Среднее Длина метода
снова не подходит. Ради увольнения своих коллег разделите их. -
Цикломатическая сложность
может обозначать все понемногу и все.Было бы разумнее доверять чему-то вроде CRAP. - Избегайте ненужных
Зависимостей
. Не забывайте, чтообращений к глобальным объектам, константы и переменные
могут доставить вам множество проблем. - По возможности избегайте
абстрактных классов
: помните, композиция важнее наследования.
В двух словах: очень простой и ценный инструмент.
Анализ PHP
PHP Insight — неплохой статический анализатор, который даст вам множество советов по улучшению качества вашего кода.
Вы можете использовать его следующим образом:
анализ phpinsights ./src
Во-первых, он даст вам краткий обзор вашей кодовой базы:
Затем он даст вам много советов:
Это действительно полезный инструмент. Вы также можете отформатировать вывод (например, JSON
) или даже создать свои собственные правила!
PHPCPD (детектор копирования PHP)
PHPCPD просканирует вашу кодовую базу и выведет дублированный код.
Вы можете использовать его, набрав:
$ phpcpd SRC /
PHPCPD выдаст такой результат:
phpcpd 4.0.0 Себастьяна Бергманна.
Найден 1 клон с 44 повторяющимися строками в 2 файлах:
- /home/superUser/src/superFile.php:11-55
/home/superUser/src/superFolder/superFile.php:11-55
5,04% дублированных строк из 873 строк кода.
Время: 29 мс, Память: 4,00 МБ
Вы можете включить несколько файлов вместо целого каталога, исключить некоторые файлы (или пути) или даже вывести результат в файл XML.
Имейте в виду: если вы перейдете к поиску нарушения принципа DRY в своей кодовой базе, имейте в виду, что дублирование кода не обязательно означает нарушение DRY.
PHPMND (Детектор магических чисел PHP)
Этот инструмент довольно специфичен: он может помочь вам найти магические числа в вашем коде.
Самый простой способ использовать:
$ phpmnd src /
Здесь вывод:
------------------------------------------------ --------------------------------
httpClient / myHttpClient.php: 98. Магическое число: 200
> 98 | if ($ response-> getStatusCode ()! = 200) {
-------------------------------------------------- ------------------------------
сервис / superClass.php: 47. Магическое число: 8
> 47 | for ($ i = 0; $ i <8; $ i ++) {
-------------------------------------------------- ------------------------------
Вы можете поиграть с множеством опций, таких как возможность игнорировать числа, исключать файлы / пути / расширения…
ЗАЩИТА
Вы когда-нибудь работали над проектом, полным ненужных зависимостей, задаваясь вопросом, как понять этот кошмар?
Хотите проверить, не мутирует ли ваш замечательный проект в сложный Большой шар грязи?
dePHPend может здорово помочь вам в этом вопросе.
Вы можете использовать его следующим образом:
$ dephpend metrics src /
Затем волшебным образом появится этот вывод:
Как вы можете видеть, dePHPend выводит количество афферентных связей, количество эфферентных связей и отображает индикатор нестабильности на их основе.
В чистом виде:
- Класс не зависит от класса
Приложение \ Ядро
- Класс
App \ Kernel
зависит от пяти других классов
Здесь высокий показатель нестабильности: этот класс объединяет вместе другие классы, но никогда не используется!
Вы также можете выводить, например, простой текст или UML.
отток php
churn-php отобразит классы, которые необходимо реорганизовать, в зависимости от цикломатической сложности и количества фиксаций, которые имеет класс.
Это довольно интересный подход. Очень сложный класс, который часто модифицируется, действительно имеет высокий шанс внести ошибки.
Как и другие инструменты, использовать его очень просто:
$ churn run src /
Вот результат
+ ------------------------------------------- + --- ------------ + ------------ + ------- +
| Файл | Времена изменились | Сложность | Оценка |
+ ------------------------------------------- + ----- ---------- + ------------ + ------- +
| SRC / Сервис / classToRefactor.php | 12 | 8 | 0,441 |
| src / Service / anotherClass.php | 3 | 15 | 0,185 |
+ ------------------------------------------- + ----- ---------- + ------------ + ------- +
Чем выше оценка, тем больше необходимость в рефакторинге.
PhpCodeFixer
Устаревшие функции плохие. Они могут создавать очень странные ошибки, которые трудно отладить.
Этот инструмент может помочь вам обнаружить их в вашем блестящем приложении. Вы можете уточнить версию PHP, с которой вы работаете, и ваш основной каталог кодовой базы, как показано ниже:
$ phpcf --target 7.1 SRC
А вот обычный возможный вывод:
PhpMetrics
И последнее, но не менее важное: если вы любитель метрик, PhpMetrics станет вашим ежедневным решением.
Он выведет много метрик о вашем проекте.
Вам нужно ввести что-то вроде этого:
$ phpmetrics --report-html = myreport.html src /
Вывод в формате HTML будет полон диаграмм и чисел.
Теперь имейте в виду, что метрики не обязательно являются абсолютной истиной, они действительно зависят от вашего проекта.Я не буду объяснять здесь все, что может выводить этот инструмент, может быть, в будущей статье?
Мой опыт показал мне, что энтропия программного обеспечения - это реальная вещь. Чем больше вы измените свое приложение, тем больше у него шансов сломаться. Ваше приложение неизбежно станет более сложным.
Эти инструменты качества PHP-кода определенно могут помочь вам в этом вопросе. Поскольку ваша кодовая база будет все больше и больше содержать ошибки, рефакторинг необходим, и эти инструменты могут показать вам, с чего начать. Ежедневно они могут дать вам хороший совет по всем этим мелочам, о которых вам нужно позаботиться, чтобы ваша кодовая база была здоровой.
Имейте в виду: они являются хорошим дополнением к , но не заменой надежного набора тестов , начиная с хороших модульных тестов.
Используете ли вы другие инструменты, кроме описанных здесь? Вы их используете по-другому? Не стесняйтесь помочь сообществу, поделившись своим опытом.
Краткий справочник
- PHP-CS-Fixer
- PHPCS
- PHPMD
- PHPStan
- PHPUnit
- PHPLoc
- PHPCPD
- PHP Insight
- PHPMND
- churn-php
- dePHPend
- PhpCodeFixer
- PhpMetrics
.Примечания к выпуску
| Проверка кода PHP
Вернуться к проверке кода PHP и синтаксиса
- Версия 2.92 - 11 января 2020 г.
- Обновлена опция проверки с использованием PHP 7.3 (по умолчанию) или PHP 5.6.
- API обновлен до PHP 7.3. Нет возможности использовать 5.6 для запросов API.
- Версия 2.91 - 3 марта 2019 г.
- Обновлена опция проверки с использованием PHP 7.2 (по умолчанию) или PHP 5.6.
- API обновлен до PHP 7.2. Нет возможности использовать 5.6 для запросов API.
- Версия 2.9 - 5 июля 2018 г.
- Добавлена возможность проверки с использованием PHP 7.1 (по умолчанию) или PHP 5.6. (Попробуйте этот код для сравнения:
1;?>
) - Обновил весь сайт до PHP 7.x (по какой-то причине я все еще использовал его на 5.6.x)
- API обновлен до PHP 7.1. Нет возможности использовать 5.6 для запросов API.
- Добавлена возможность проверки с использованием PHP 7.1 (по умолчанию) или PHP 5.6. (Попробуйте этот код для сравнения:
- Версия 2.83 - 2 января 2018 г.
- Улучшенный код внешнего интерфейса для более быстрой отрисовки начальной страницы.
- Версия 2.82 - 13 июля 2016 г.
- Внесены незначительные изменения в стиль, в том числе затемнение фона для лучшей читаемости результатов.
- Версия 2.81 - 25 января 2016 г.
- Версия 2.8 - 2 сентября 2015 г.
- Проверка синтаксиса PHP (php -l) теперь обновлена до версии 5.6.10 (ранее 5.4.11).
- Версия 2.7 - 10 июля 2015 г.
- Исправлено ложное срабатывание предупреждения об отсутствии символа '>' в объявлении массива пары ключ / значение при использовании одинарных кавычек (спасибо Tronds).
- Версия 2.62 - 2 июля 2015 г.
- Добавлено уточнение для несовпадающего числа () {} или [], когда не известно, что символ находится внутри строки (и не должен учитываться, но есть).
- Версия 2.61 - 12 июня 2015 г.
- Из-за недавних злоупотреблений была автоматизирована блокировка злоумышленников API для частых повторных вызовов.
- Версия 2.6 - 31 мая 2015 г.
- Удалено ложное срабатывание при объявлении переменной с сообщением об ошибке ==. (Спасибо, Кен Г.)
- Обновлен дизайн сайта на Bootstrap, сделав его полностью адаптивным и удобным для мобильных устройств.
- Добавлен Carbon Ads (рекламная сеть для разработчиков), которая загружается вместе со страницей и не обновляется во время проверок (потому что это может раздражать).
- Версия 2.51 - 25 января 2015 г.
- Добавлена кнопка очистки коробки. (Спасибо Мартину Х.)
- Версия 2.5 - 21 января 2015 г.
- НОВАЯ ПРОВЕРКА: двойные точки с запятой (;;), даже если они находятся на разных строках.(Спасибо, Майкл X.)
- Версия 2.4 - 17 декабря 2014 г.
- API теперь имеет встроенную задержку не более 1 запроса в секунду.
- Версия 2.33 - 12 декабря 2014 г.
- Больше не идентифицирует ошибочно // как начало комментария, если первая косая черта экранирована (например, \ //) как то, что вы можете найти в выражении preg_match ().
- API Syntax Check также включает в себя это изменение (поскольку оно будет мешать исходному коду ).
- Версия 2.32 - 4 ноября 2014 г.
- Больше не удаляет комментарии в стиле Perl (# comment) - больше проблем, чем решений.
- Версия 2.31 - 11 октября 2014 г.
- Теперь удаляет строки комментариев в стиле Perl (# comment) перед синтаксическим анализом. (Спасибо Кейли С.)
- Версия 2.3 - 3 октября 2014 г.
- Незначительное исправление (ложное срабатывание) для объявлений массивов, которые определяют array () в качестве значения.(Спасибо Рене-Пьеру Г.)
- Незначительное исправление для объявлений массивов, содержащих знак равенства (=) как часть строки HTML в значении. (Спасибо Рене-Пьеру Г.)
- Версия 2.21 - 2 августа 2014 г.
- Удалено ложное срабатывание для устаревшего split () при использовании mb_split, str_split, preg_split, chunk_split и dba_key_split. (Спасибо, Брент Э.)
- Версия 2.2 - 9 июля 2014 г.
- Добавлено предупреждение для любых функций, не рекомендуемых в PHP 5.x (Спасибо Fitra F.)
- Версия 2.11 - 20 июня 2014 г.
- Исправлена XSS-уязвимость в ошибках проверки синтаксиса (спасибо Кевину З.)
- Версия 2.1 - 4 мая 2014 г.
- Добавлен новый тест для использования чего угодно, кроме скобок [] после предопределенной переменной (, например, $ _GET, $ _POST, $ _SERVER и т. Д.) (Спасибо Daniel A.)
- Версия 2.02 - 30 января 2014 г.
- Улучшено обнаружение регулярных выражений массивов, используемых в ошибке объявления массива , чтобы уменьшить количество ложных срабатываний (спасибо CoR)
- Версия 2.01 - 2 января 2014 г.
- Исправлена ошибка безопасности с отображением вывода при обнаружении несовпадающих пар символов (спасибо Дэну Т.)
- Версия 2.0 - 2 декабря 2013 г.
- Проверка синтаксиса PHP (php -l) теперь обновлена до 5.4.11 (ранее 5.2.17)
- Версия 1.81 - 9 ноября 2013 г.
- Установка значения null в массиве больше не вызывает ошибку «нет цитат» (спасибо, Александр).
- Версия н / д - 30 октября 2013 г.
- Версия 1.8 - 23 октября 2013 г.
- Исправлена ложная ошибка объявления массива из-за отсутствия пробела между = и array () (спасибо Скотту Д. и Итану М.).
- Уменьшено количество ложных срабатываний для пропущенной точки с запятой из-за конкатенации (спасибо Raymond M).
Он не сработает, если точка находится в конце строки, но все равно будет ложно срабатывать, если точка находится в начале новой строки. - Код, отличный от PHP, удаляется, как и комментарии, перед проверкой, что снижает количество ложных срабатываний.
- Сбросить общий журнал ошибок.
- Версия 1.72 - 28 мая 2013 г.
- Исправлена ошибка, из-за которой конец PHP?> не соблюдался при удалении комментариев (спасибо Йоханнесу).
- Версия 1.71 - 22 апреля 2013 г.
- Исправлена ошибка, из-за которой http: // вызывал проблемы: ложно идентифицировался как комментарий (спасибо Икраму Х).
- Версия 1.7 - 12 апреля 2013 г.
- Проверка синтаксиса PHP указывает на конкретный номер строки... эта строка теперь отображается для вас (Спасибо, Джон Б).
- Версия 1.6 - 24 января 2013 г.
- Значительно уменьшено количество ложных срабатываний для массивов с отсутствующими> и неправильно сформированными ключами или значениями (спасибо Michael C).
- Версия 1.5 - 2 января 2013 г.
- Автоматически удаляет комментарии перед обработкой, уменьшая количество ложных срабатываний (спасибо, Карло).
- Версия 1.4 - 21 мая 2012 г.
- Улучшено регулярное выражение для всех обнаружений массивов, чтобы игнорировать функцию in_array () (спасибо Эндрю Х).
- Версия 1.3 - 20 февраля 2012 г.
- Улучшенное регулярное выражение для ошибки объявления переменной (спасибо Дэвиду Р.).
- Версия 1.2 - 1 ноября 2011 г.
- Улучшено RegEx, чтобы не генерировать ложные срабатывания, когда в объявлении переменной присутствует терниарный оператор.
- Улучшенное регулярное выражение для обнаружения единственного знака равенства в управляющей структуре (, например, оператор if)
- Версия 1.11 - 15 июля 2011 г.
- Перемещены кнопки социальных сетей, чтобы они отображались только после анализа кода. Добавлен Google +1 для обмена в социальных сетях.
- Версия 1.1 - 9 июля 2011 г.
- Версия 1.0 - 6 июля 2011 г.
- Выход из периода бета-тестирования.Дальнейшие улучшения будут основаны на отзывах пользователей.
- Версия 0.6 - 24 июня 2011 г.
- Добавлена проверка отсутствия> в объявлениях массивов (, например, array ('name' = 'value'))
- Также проверяет объявления массивов на предмет текстовых переменных или значений, не заключенных в кавычки (, например, array ('name' => value))
- Версия 0.5.2 - 3 июня 2011 г.
- Обновлена проверка If / Elseif / Else с улучшенным шаблоном RegEx (уменьшено количество ложных срабатываний)
- Обновлен шаблон объявления переменной RegEx для поддержки логических значений
- Версия 0.5 - 31 мая 2011 г.
- Управляющие структуры Check If / Elseif / Else на предмет использования единственного равенства (задайте значение, а не оператор сравнения)
- Версия 0.4 - 16 мая 2011 г.
- Проверьте несоответствующие пары комментариев / * * /, которые могут нанести ущерб вашему рассудку
- Проверить неправильный синтаксис в foreach при определении переменных $ key => $ value
- Проверка плохо отформатированных объявлений PHP () - Спасибо B.М.
- Версия 0.3 - 22 апреля 2011 г.
- Добавлен в проверку синтаксиса командной строки PHP (php -l) для получения дополнительного контекста
- Версия 0.2 - 10 апреля 2011 г.
- Создал сложное регулярное выражение для проверки строк, которые определяют переменную, но не имеют точки с запятой (, например, $ variable = "bob")
- Адаптировано RegEx для поиска переменных, определенных со слишком большим количеством знаков равенства ( e.г. $ переменная == "боб";)
- Версия 0.1.2 - 7 апреля 2011 г.
- Отображает код проблемы при несоответствии открытия (, {или [
- Версия 0.1.1 - 30 марта 2011 г.
- Переписан, чтобы быть более модульным в коде
- Проверить на несоответствие (), {} и []
- Версия 0.1 - 20 марта 2011 г.
- Проверить на несоответствие количество скобок (открыто / закрыто)
.
http - простой способ проверить URL-адрес для 404 в PHP?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
Служба проверки разметки W3C
Проверка по URI
Проверить документ онлайн:
Адрес:
Больше вариантов
Кодировка символов | (обнаружение автоматически) utf-8 (Unicode, весь мир) utf-16 (Unicode, весь мир) iso-8859-1 (Западная Европа) iso-8859-2 (Центральная Европа) iso-8859-3 (Южная Европа) iso-8859 -4 (североевропейский) iso-8859-5 (кириллица) iso-8859-6-i (арабский) iso-8859-7 (греческий) iso-8859-8 (иврит, визуальный) iso-8859-8-i ( Иврит, логический) iso-8859-9 (турецкий) iso-8859-10 (Latin 6) iso-8859-11 (Latin / Thai) iso-8859-13 (Latin 7, Baltic Rim) iso-8859-14 (Latin 8, кельтский) iso-8859-15 (Latin 9) iso-8859-16 (Latin 10) us-ascii (базовый английский) euc-jp (японский, Unix) shift_jis (японский, Win / Mac) iso-2022-jp (Японский, электронная почта) euc-kr (корейский) ksc_5601 (корейский) gb2312 (китайский, упрощенный) gb18030 (китайский, упрощенный) big5 (китайский, традиционный) Big5-HKSCS (китайский, Гонконг) tis-620 (тайский) koi8- r (русский) koi8-u (украинский) iso-ir-111 (кириллица KOI-8) macintosh (MacRoman) windows-1250 (центральная Европа) windows-1251 (кириллица) windows-1252 (западная Европа) windows-1253 (греческий ) windows-1254 (турецкий) windows-1255 (иврит) windows-1256 (арабский) windows-1257 (бал тик обод) | Только при отсутствии |
---|---|---|
тип документа | (обнаруживать автоматически) HTML5 (экспериментальный) XHTML 1.0 StrictXHTML 1.0 TransitionalXHTML 1.0 FramesetHTML 4.01 StrictHTML 4.01 TransitionalHTML 4.01 FramesetHTML 4.01 + RDFa 1.1HTML 3.2HTML 2.0ISO / IEC 15445: 2000 («ISO HTML») XHTML 1.1XHTML + RDFaXHTML Basic 1.0XHTML Basic 1.1XHTML Профиль печати для мобильных устройств 1.0XHTML- XHTML 1.1 плюс MathML 2.0 XHTML 1.1 плюс MathML 2.0 плюс SVG 1.1 MathML 2.0SVG 1.0SVG 1.1SVG 1.1 TinySVG 1.1 BasicSMIL 1.0SMIL 2.0 | Только при отсутствии |
Список сообщений последовательно сгруппировать сообщения об ошибках по типу | ||
Показать источник | Очистить разметку с помощью HTML-Tidy | |
Показать схему | Проверить страницы ошибок | Подробный вывод |
Подтвердить загрузкой файла
Загрузить документ для проверки:
Файл:
Больше вариантов
Кодировка символов | (обнаружение автоматически) utf-8 (Unicode, весь мир) utf-16 (Unicode, весь мир) iso-8859-1 (Западная Европа) iso-8859-2 (Центральная Европа) iso-8859-3 (Южная Европа) iso-8859 -4 (североевропейский) iso-8859-5 (кириллица) iso-8859-6-i (арабский) iso-8859-7 (греческий) iso-8859-8 (иврит, визуальный) iso-8859-8-i ( Иврит, логический) iso-8859-9 (турецкий) iso-8859-10 (Latin 6) iso-8859-11 (Latin / Thai) iso-8859-13 (Latin 7, Baltic Rim) iso-8859-14 (Latin 8, кельтский) iso-8859-15 (Latin 9) iso-8859-16 (Latin 10) us-ascii (базовый английский) euc-jp (японский, Unix) shift_jis (японский, Win / Mac) iso-2022-jp (Японский, электронная почта) euc-kr (корейский) ksc_5601 (корейский) gb2312 (китайский, упрощенный) gb18030 (китайский, упрощенный) big5 (китайский, традиционный) Big5-HKSCS (китайский, Гонконг) tis-620 (тайский) koi8- r (русский) koi8-u (украинский) iso-ir-111 (кириллица KOI-8) macintosh (MacRoman) windows-1250 (центральная Европа) windows-1251 (кириллица) windows-1252 (западная Европа) windows-1253 (греческий ) windows-1254 (турецкий) windows-1255 (иврит) windows-1256 (арабский) windows-1257 (бал тик обод) | Только при отсутствии |
---|---|---|
тип документа | (обнаруживать автоматически) HTML5 (экспериментальный) XHTML 1.0 StrictXHTML 1.0 TransitionalXHTML 1.0 FramesetHTML 4.01 StrictHTML 4.01 TransitionalHTML 4.01 FramesetHTML 4.01 + RDFa 1.1HTML 3.2HTML 2.0ISO / IEC 15445: 2000 («ISO HTML») XHTML 1.1XHTML + RDFaXHTML Basic 1.0XHTML Basic 1.1XHTML Профиль печати для мобильных устройств 1.0XHTML- XHTML 1.1 плюс MathML 2.0 XHTML 1.1 плюс MathML 2.0 плюс SVG 1.1 MathML 2.0SVG 1.0SVG 1.1SVG 1.1 TinySVG 1.1 BasicSMIL 1.0SMIL 2.0 | Только при отсутствии |
Список сообщений последовательно сгруппировать сообщения об ошибках по типу | ||
Показать источник | Очистить разметку с помощью HTML-Tidy | |
Показать схему | Проверить страницы ошибок | Подробный вывод |
Примечание : загрузка файлов может не работать через Интернет
Проводник в некоторых версиях Windows XP Service Pack 2, см. Наш
информационная страница
на веб-сайте W3C QA.
.