PHP 7: Что нового?

Оператор объединения с null

Добавлен оператор объединения с null (??), являющийся синтаксическим сахаром для распространенной операции, когда совместно используются тернарный оператор и функция isset(). Он возвращает первый операнд, если он задан и не равен NULL, а в обратном случае возвращает второй операнд.


<?php
	// извлекаем значение $_GET['user'] и возвращаем 'not passed'
  // если имя пользователя не передано
  $username = $_GET['username'] ?? 'not passed';
  print($username);
  print("<br/>");
 
  // Эквивалентный код с использованием тройного оператора
  $username = isset($_GET['username']) ? $_GET['username'] : 'not passed';
  print($username);
  print("<br/>");
  // Цепная операция ??
  $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed';
  print($username);
?>

Данный код выведет следующее:


not passed
not passed
not passed

Объявление возвращаемого типа

Добавлена новая функция — объявление возвращаемого типа. Объявление возвращаемого типа указывает тип значения, возвращаемого функцией. Мы можем объявлять следующие возвращаемые типы PHP: int, float, bool, string, interfaces, array, callable.


<?php
    declare(strict_types = 1);
    function retval(int $value): int {
        return $value;
    }
    print(retval(9));
?>

Код выводит в браузере следующий результат: 9

Если заменить строчку return $value + 1.1; и вызвать ещё раз, то получим ошибку Fatal error: Uncaught TypeError: Return value of retval() must be of the type integer, float returned in....

Таким образом, вы можете писать аккуратный код, следя за типами переменных.

Массив констант при помощи функции define()

С помощью функции define() стало возможным определить массив констант. В PHP 5.6 это можно было сделать с помощью функции const().


<?php
    //определим массив с помощью функции define()
    define('animals', [
       'dog',
       'cat',
       'bird'
    ]);
    print(animals[1]);
?>
Реклама