Короткая запись полезна, когда смысл остаётся очевидным. В старом переводе некоторые приёмы экономили символы ценой читаемости или обходили ограничения прежнего PHP. Ниже шесть вариантов для современного PHP: без временных переменных с числовыми именами и ненужных ссылочных функций.
1. Сначала проверяйте результат операции
log вычисляет логарифм, а для сообщения в журнал служит error_log. fwrite возвращает число записанных байтов либо false. Ноль и неполную запись нужно отличать от успешной полной записи. Здесь $h — уже открытый доступный для записи поток; пример обнаруживает неполную запись, но не реализует повторную отправку.
$data = 'some text';
$written = fwrite($h, $data);
if ($written === false || $written !== strlen($data)) {
error_log('Writing failed or incomplete');
}Замена проверки на fwrite(...) or ... скрывает число байтов и не замечает частичную запись. Сокращение не должно терять проверяемый контракт.
2. Тернарный оператор для простого выбора
$message = ($age < 16) ? 'Welcome!' : 'You are too old!';Такую запись легко сравнить с обычным if/else. Если ветви выполняют несколько действий или содержат вложенные условия, оставьте развёрнутую форму. Это учебное условие, а не проверка реального допуска по возрасту.
3. for показывает начало, границу и шаг
Для обычного списка с последовательными индексами можно выбрать каждый второй элемент. Если ключи произвольные, сначала выберите другой способ перебора.
$target = ['a', 'b', 'c', 'd', 'e'];
$source = [];
for ($i = 0, $length = count($target); $i < $length; $i += 2) {
$source[] = $target[$i];
}
// $source: ['a', 'c', 'e']4. Результат функции можно разыменовать
$extension = pathinfo('file.png')['extension']; // pngЭтот синтаксис доступен начиная с PHP 5.4. Для современного PHP не требуются вспомогательные r() и a(), возвращающие ссылки только ради доступа к результату функции. Если ключ может отсутствовать, обработайте этот случай явно:
$extension = pathinfo('README')['extension'] ?? '';5. Короткий литерал массива
$options = ['limit' => 20, 'offset' => 0];Форма [] выражает то же создание массива, что и array(), и не требует дополнительной функции. Имена ключей продолжают объяснять назначение значений.
6. Сокращайте повторение, сохраняйте объяснение
Понятное имя переменной полезнее экономии нескольких букв. Комментарий должен объяснять причину ограничения, порядок действий или компромисс. Не удаляйте его только ради уменьшения исходника. Несколько прямых строк проще сопровождать, чем плотное выражение с неочевидным приоритетом операторов.
Проверка записи: PHP: fwrite, error_log и log.