PHP 7.3 (06.12.2018)

Улучшенный hededoc и nowdoc

📜 Heredoc/Nowdoc: гибкий синтаксис
Было: отступы внутри heredoc ломали содержимое.
Стало: можно выравнивать по коду:

				
					$sql = <<<SQL
      SELECT id, name
      FROM users
      WHERE active = 1
      SQL; // закрывающий идентификатор — без отступа
				
			

→ Теперь можно писать SQL; с отступом (но не табами), и они не попадут в строку.

JSON: JsonException

📦 JSON: JsonException
Было: json_encode() возвращал false, ошибку — через json_last_error().
Стало (с флагом JSON_THROW_ON_ERROR):

				
					try {
    $data = json_encode($obj, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
    // обработка
}
				
			

→ Чистая обработка ошибок без if (json_last_error()).

 

is_countable

🔍 is_countable($var)
Зачем: безопасно проверить, можно ли вызвать count().
Было:

				
					if (is_array($var) || $var instanceof Countable) { ... }
				
			

Стало:

				
					if (is_countable($var)) { ... }
				
			

array_key_first(), array_key_last()

📎 array_key_first(), array_key_last()
Без пересоздания массива:

				
					$first = array_key_first($assoc); // 'a'
$last  = array_key_last($assoc);  // 'c'
// вместо reset()+key() или array_keys()[0]
				
			

Прочее

⚙️ Breaking changes

  • continue в switch → continue 2 (иначе Warning),
  • fread()/fwrite() больше не прерываются EINTR,
  • mbstring: strict detection включена по умолчанию → ломает mb_strlen("рус") на некоторых системах.