Ранее:
- Что нового в php 5.4 — 10 новых возможностей;
- Что нового в php 5.5 — 10 новых возможностей.

10 новых возможностей php 5.6
1. Скалярные выражения в константах.
class Test
{
const DAY = 60 * 60 * 24;
const LIST_OF_CARS = array(
'honda',
'bmw',
'mercedes',
);
}
Арифметические операции и массивы теперь доступны в константах.
2. Переменное число аргументов у функции. Возможность не задавать все аргументы явно, можно передавать неограниченное количество аргументов с помощью оператора "...". Пример:
function summary($a1, $a2 = 2, ...$other)
{
echo $a1 . PHP_EOL;
echo $a2 . PHP_EOL;
print_r($other);
}
summary(1, 2, 'value1', 'value2' , 'valueN');
/** Результат:
1
2
Array
(
[0] => value1
[1] => value2
[2] => valueN
)*/
Как видно из примера, все переданные параметры попадают в массив. В более ранних версиях была возможность передавать переменное количество аргументов с помощью func_get_args, но теперь в php 5.6 можно без этого костыля.
А также доступна распаковка аргументов с помощью "...":
// PHP 5.6+
function add($a1, $a2, $a3)
{
return $a1 + $a2 + $a3;
}
$operators = [2, 3];
echo add(1, ...$operators);
//Результат: 6
3. Не перезаписываются значения в массивах, если массив объявлен как property класса и имеет не статические ключи. Ранее значения переписывались в соответствии с индексами массива. Рассмотрим на примере:
class Test {
const ZERO = 0;
public $testArray = [
self::ZERO => 'first',
'second',
'third',
];
}
// результат в версиях до php 5.6:
array(2) {
[0]=>
string(6) "second"
[1]=>
string(5) "third"
}
// php 5.6+:
array(3) {
[0]=>
string(5) "first"
[1]=>
string(6) "second"
[2]=>
string(5) "third"
}
4. Новый оператор возведения в степень **. Уже имелась функция pow(). Оператор ** добавлен для удобства. Примеры:
$i = 2 ** 3; //8 $i **= 2; //64
5. default для необязательных аргументов. Можно опускать значения для необязательных аргументов, передавая вместо аргумента ключевое слово default.
function fooBar($i, $description = NULL, $force = true, $ignore = true) {}
fooBar(10, default, default, false);
6. Исключения вместо фатальных ошибок. Пример:
$object = NULL; $object->callMethod();
До php 5.6 этот код падал с фаталом:
Fatal error: Call to a member function callMethod() on a non-object
В php 5.6+ вылетит EngineException с сообщением 'Call to a member function on a non-object'.
7. Иморт функций из namespace. Поддерживается импортирование функций и констант из пространства имён. Имеется возможность задавать алиас (псевдоним) на имя функции.
PHP 5.6+ // импорт функции use function foo\bar\functionName; functionName(); // импорт и создание алиаса (псевдонима) функции use function foo\bar\functionName as myFunc; myFunc();
8. Кодировка для функций htmlentities(), html_entity_decode() и htmlspecialchars() по умолчанию выставляется равной кодировке, которая задана через default_charset.
9. phpdbg — интерактивный php-дебаггер, реализован как SAPI модуль.
10. GMP перегрузка операторов. GMP объекты теперь поддерживают перегрузку операторов. Я никогда не пользовался GMP. Если можете понятно объяснить зачем они и зачем в них перегрузка операторов - давайте в комментарии.
И другие новые фичи php 5.6+:
-
добавлена функция
__debugInfo. Позволяет изменять свойства объекта перед тем как объект будет выведен на экран с помощьюvar_dump. Встраивать функцию нужно прямо в класс. - улучшения SSL/TLS
-
pgsqlтеперь может выполнять асинхронные соединения и запросы.
Читайте также: