9 полезных советов и фрагментов кода для PHP для лучших результатов

Эти советы и фрагменты кода в основном собраны из потрясающих сообществ на StackOverflow. Они подходят для работы начиная от PHP5 и до PHP8.
Если вы обнаружите ошибки или опечатки, дайте знать в комментариях.
1. Используйте готовые инструкции при работе с базами данных, чтобы предотвратить SQL инъекции
Источник: https://stackoverflow.com/a/60496/9478774
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
$stmt->execute([ 'name' => $name ]);
foreach ($stmt as $row) {
// Do something with $row
}
Этот код используется для настройки соединения, его можно скопировать.
$dbConnection = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'password');
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$preparedStatement = $db->prepare('INSERT INTO table (column) VALUES (:column)');
$preparedStatement->execute([ 'column' => $unsafeValue ]);
2. Готовые инструкции для динамических запросов? Ограничьте возможные значения, используя if else
Источник: https://stackoverflow.com/a/60496/9478774
if (empty($dir) || $dir !== 'DESC') {
$dir = 'ASC';
}
// only 2 possible options
3. Проверьте, содержит ли строка конкретное слово
Источник: https://stackoverflow.com/a/4366748/9478774
// @ver below 8
$a = 'How are you?';
if (strpos($a, 'are') !== false) {
echo TRUE;
}
// @ver 8
if (str_contains('How are you', 'are')) {
echo TRUE;
}
4. Обрабатывайте undefined index/offset с помощью array_key_exists() или isset()
Источник: https://stackoverflow.com/a/4261200/9478774
//isset()
$value = isset($array['my_index']) ? $array['my_index'] : '';
//array_key_exists()
$value = array_key_exists('my_index', $array) ? $array['my_index'] : '';
5. Когда нужно получить значение $_POST или $_GET, или $_REQUEST, можно использовать isset() или !empty()
Источник: https://stackoverflow.com/a/4261200/9478774
$value = isset($_POST['value']) ? $_POST['value'] : '';
//empty()
$value = !empty($_POST['value']) ? $_POST['value'] : '';
//for PHP 7 and later
$value = $_POST['value'] ?? '';
6. Вывод ошибок на PHP
Источник: https://stackoverflow.com/a/21429652/9478774
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
7. Всегда помни о require_once() в 99,99% случаев
Если сравнивать с include(), функция require() обрабатывает ошибки по-другому. Она остановит выполнение скрипта, в то время как include() продолжит скрипт, несмотря на ошибку.
8. Вспомогательные функции для редиректа
Источник: https://stackoverflow.com/a/768472/9478774
function redirect($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
}
9. Возвращай JSON этим скриптом
Источник: https://stackoverflow.com/a/4064468/9478774
<?php
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);
И… остался еще 41 пункт
Надеюсь, эта статья окажется полезной для вашей работы. Всего самого лучшего!
Источник: https://dev.to/ricardosawir/9-useful-php-tips-and-code-snippets-that-get-the-jobs-done-1he5
Перевод: Anna Martus