Ранее:
- Что нового в 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
теперь может выполнять асинхронные соединения и запросы.
Читайте также:
Комментарии 0