PHP 5.6

PHP 5.6 — последняя версия ветки 5.x. Главная её задача — подготовить код к переходу на PHP 7: убрали устаревшее, добавили современные конструкции, но оставили обратную совместимость.

Аргументы переменной длины: ...$args

До 5.6 приходилось использовать func_get_args() — нечитаемо и не типизируемо.

Было:

function sum() {
    $args = func_get_args();
    return array_sum($args);
}

Стало (PHP 5.6+):

function sum(...$numbers) {  // ✅ Читаемо
    return array_sum($numbers);
}
sum(1, 2, 3); // 6

→ Это основа для ...$args в строго типизированных функциях PHP 8+.

use function и use const — явный импорт

Раньше вызов глобальных функций/констант в неймспейсе выглядел как «магия»:

namespace App;
echo strlen("test"); // откуда strlen? из глобала? из текущего неймспейса?

PHP 5.6+ позволяет импортировать явно:

namespace App;
use function strlen;
use const PHP_EOL;

echo strlen("test"); // ✅ Теперь видно: это глобальная функция
echo PHP_EOL;

→ Повышает читаемость и облегчает рефакторинг.

Константы: вычисления на этапе компиляции

Раньше в const можно было писать только литералы:

// PHP < 5.6: ❌ Parse error
const MB = 1024 * 1024;

PHP 5.6+ разрешает скалярные выражения:

const MB = 1024 * 1024;       // ✅ 1048576
const DSN = 'pgsql:host=' . DB_HOST;

→ Вычисляется один раз при загрузке класса — нет накладных расходов в рантайме.

Deprecated(удалено в следующих версиях)

Что устарело в PHP 5.6 Почему На что заменить
mysql_* функции
(mysql_connect, mysql_query и др.)
Нет поддержки prepared statements → уязвимость к SQL-инъекциям mysqli или PDO
$php_errormsg Глобальная переменная → конфликты в многопоточных SAPI (например, FPM) error_get_last()
ereg_* функции
(ereg, eregi)
Устарели ещё в PHP 5.3; медленнее PCRE preg_match(), preg_replace()

Проверка совместимости

				
					# Установи PHP Compatibility (через Composer)
composer require --dev phpcompatibility/php-compatibility

# Проверь проект на совместимость с PHP 7.0 (куда мигрируешь от 5.6)
phpcs --standard=PHPCompatibility --runtime-set testVersion 7.0 your-project/