1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Просто о сложном или изучаем PHP7! Часть 6. Операторы сравнения в PHP

Содержание

Операторы в PHP

Операторы — одна из важнейших и базовых тем. Почти все выражения так или иначе содержат их в себе. Без операторов в PHP не было бы возможности делать что-либо с данными вообще, так же, как, например, в математике. Поэтому отнеситесь к данной теме серьёзно, а в конце обязательно сделайте домашнее задание — только практика, только хардкор.

Но прежде чем перейти к изучению операторов, я предлагаю изучить функцию var_dump(). Она позволяет вывести тип и значение чего-либо.

Или же переменной:

2 меньше 4. Результат – истина. Всё верно.

Поздравляю, теперь мы в любой момент можем узнать, что находится в переменной, или же сразу узнать результат какого-либо выражения. Давайте теперь вернёмся к нашей основной теме урока.
Тема операторов очень плотно переплетается с темой типов данных. Как мы с вами уже говорили на прошлом уроке, тип данных, который получится в результате какого-либо выражения, будет зависеть от оператора. И, например, результатом сложения при использовании оператора плюса всегда будет число.

Приоритет операторов

Начнём с того, что операторы имеют разный приоритет. Как, например, в математике: оператор умножения будет более приоритетным по сравнению с оператором сложения:

Приоритетом можно управлять с помощью круглых скобок, например:

Ну и тут думаю всё понятно:

В целом приоритеты операторов довольно предсказуемы.
Приоритет всех операторов в PHP можно посмотреть в официальной документации.

Типы операторов в PHP

А теперь давайте рассмотрим разные типы операторов

Арифметические операторы

Тут нас ждут знакомые со школьной скамьи операторы:

int 9
int 3
int 18
int 2
int 2
int 36

Многие впадают в ступор от оператора остатка от деления. Тут всё просто. В нашем случае мы вычисляем остаток от деления 6 на 4. Нацело не делится, целая часть – 1, и 2 в остатке. Ещё несколько аналогичных примеров для понимания:

int 1
int 5
int 0

Думаю, арифметические операторы больше не требуют дополнительных разъяснений.

Оператор присваивания

С ним мы уже работали. Используется для присваивания какого-либо значения в переменную.
Классический пример:

Ок, тут всё просто. А как на счёт такого:

Здесь переменной $x присвоили значение 5, а затем умножили на 2 и положили результат выражения в переменную $result. Да, в PHP так тоже можно, хоть и не приветствуется, так как код выглядит довольно запутанно.

Помимо этого есть так называемые сокращенные, комбинированные операторы присваивания.
Например, в комбинации с оператором сложения:

можно было бы записать как

Таким образом, если что-то совершается с левым операндом в исходном виде, то можно использовать эти сокращённые варианты. И да, это применяется и выглядит весьма элегантно, стоит к ним привыкать уже сейчас. Давайте рассмотрим ещё несколько примеров:

И с конкатенацией строк:

string ‘Hello world!’ (length=12)

Операторы сравнения

Ну тут из названия понятно, что это за операторы и для чего они предназначены. Результатом их работы всегда будет булево значение (true или false).

Начнём с операторов равенства/неравенства:

boolean true
boolean false
boolean false
boolean true

Давайте поясню. Оператор == приводит операнды к одному типу и после сравнивает их значения. Так строка ‘2’ была преобразована к числу и значения оказались равными.
Оператор тождественного равенства === не выполняет приведения типов и сравнивает сначала то, что типы значений идентичны, например, целые числа, а затем сравнивает их значения. И если они одинаковы, то только в таком случае возвращает true.

Оператор неравенства != приводит типы к одному и сравнивает значения. Если они не равны, вернёт true, иначе – false.
Оператор тождественного неравенства !== сначала сравнивает типы, если они не идентичны, например, строка и число, то вернёт true, иначе сравнит их значения. Если они не равны, вернёт true, иначе – false.

Также к операторам сравнения относятся:

boolean false
boolean true
boolean false
boolean true

Тут всё очевидно, не будем задерживаться.

Spaceship

А теперь рассмотрим оператор сравнения, который появился в PHP7. Это спейсшип (или космический корабль) . Похож на корабль штурмовиков из звёздных войн, не так ли?

Логика у этого оператора следующая:
$a $b
Если $a > $b, вернёт 1
Если $a == $b, вернёт 0
Если $a

int -1
int 0
int 1

Данный оператор был введён для использования в функциях сортировки. Эту тему мы пока поднимать не будем, просто знайте, что вот такой интересный оператор появился в последней версии PHP.

Инкремент и декремент

Зачастую в разных алгоритмах приходится увеличивать и уменьшать целые числа на единицу.
Для этого существуют специальные операторы инкремента и декремента.
Варианты могут быть самыми разными:

  • $i++ — постфиксный инкремент, возвращает текущее значение $i, а затем увеличивает значение на единицу
  • $i— — постфиксный декремент, возвращает текущее значение $i, а затем уменьшает значение на единицу
  • ++$i – префиксный инкремент, сначала увеличивает значение переменной $i на единицу, а затем возвращает результат
  • —$i – префиксный декремент, сначала уменьшает значение переменной $i на единицу, а затем возвращает результат

Давайте рассмотрим несколько простых примеров:

int 5
int 7
int 7
int 6

С инкрементом и декрементом на этом всё. Идём дальше.

Логические операторы

А теперь поговорим об одном из самых важных типов операторов, а именно – логических. Эти операторы используются для вычисления условий. Результатом такого оператора всегда будет истина или ложь. При этом операндами так же выступают истина или ложь.
Давайте перечислим их:

  • && — логическое И, вернёт true, только если оба операнда истинны (true)
  • || — логическое ИЛИ, вернёт true, если хотя бы один из операндов является истинным
  • ! – ОТРИЦАНИЕ, возвращает true, если операнд – false, и наоборот. Применяется если нужно инвертировать условие, зачастую это очень кстати.
  • xor – исключающее ИЛИ, вернёт true, только если один из операндов true, а другой – false
Читать еще:  Как установить приложение в Firefox OS.

Давайте посмотрим на примере:

А теперь давайте более интересно – определим, является ли число чётным и при этом оно больше 10. Для того, чтобы проверить на чётность – достаточно взять остаток от деления на 2 и сравнить с нулём. Если будет 0, то число чётное. Давайте напишем первое вычисление:

А теперь второе:

Остаётся сделать так, чтобы выполнились оба условия. Воспользуемся логическим И:

Вычисление можно было бы выразить и одной строкой:

Однако, согласитесь, первый вариант разбит по пунктам и более понятен. Я хочу, чтобы Вы поняли. Ваш код не должен занимать как можно меньше места. Он должен быть понятен. Можно сказать, будет очень неплохо, если он будет скучен. Он должен легко читаться программистами. В первом случае всё очевидно: выяснили, что число чётное, что оно больше 10, и решили, что оба эти условия выполняются одновременно. Вот как-то так должен мыслить человек, читающий Ваш код.

И ещё, если операнды не являются булевыми значениями, они будут автоматически приведены к true или false. Оставим это на самостоятельное ковыряние – в домашнем задании будет пункт, касательно этого замечания. Обязательно выполните его.

Строковый оператор конкатенации

Да-да, для строк существует только один оператор – для их объединения в одну: оператор конкатенации. Он представляет из себя точку и его использование выглядит следующим образом:

На этом заканчивается наш урок по операторам. Обязательно выполните домашку, без неё дальше не пойдёт.

Просто о сложном или изучаем PHP7! Часть 6. Операторы сравнения в PHP

Операторы сравнения применяются для сравнения двух значений. В зависимости от значений, которые сравниваются между собой, операторы сравнения возвращают логические значения true (истина) или false (ложь). Как таковые, операторы сравнения сами по себе практически не используются, основное их применение это совместная работа с оператором if, который будет рассмотрен в седьмой части.

Просто о сложном или изучаем PHP7! Часть 6. Операторы сравнения в PHP

Создадим две переменные, $a и $b и присвоим им значения 76 и 93 соответственно.

Создадим ещё шесть переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06

где: $c_01 = $a $b — переменной $c_03 присвоено значение $a > $b (переменная $a больше переменной $b )

$c_04 = $a >= $b — переменной $c_04 присвоено значение $a >= $b (переменная $a больше либо равна переменной $b )

$c_05 = $a == $b — переменной $c_05 присвоено значение $a == $b (переменная $a равна переменной $b )

Выведем в окне веб-браузера тип переменной $c_01 , используя функцию gettype

Перейдём в адресной строке веб-браузера по адресу http://localhost/log.php и видим, что переменная $c_01 имеет тип boolean

Таким же образом выведем в окне веб-браузера типы переменных $c_02 , $c_03 , $c_04 , $c_05 и $c_06 , дописав следующие строки кода:

echo «Переменная c_02 имеет тип:»; echo gettype ($c_02);

echo «Переменная c_03 имеет тип:»; echo gettype ($c_03);

echo «Переменная c_04 имеет тип:»; echo gettype ($c_04);

echo «Переменная c_05 имеет тип:»; echo gettype ($c_05);

Выведем в окне веб-браузера значения переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06 дописав в файле log.php строки кода:

echo «Переменная c_01 принимает значение: $c_01»;

echo «Переменная c_02 принимает значение: $c_02»;

echo «Переменная c_03 принимает значение: $c_03»;

echo «Переменная c_04 принимает значение: $c_04» ;

echo «Переменная c_05 принимает значение: $c_05»;

В окне веб-браузера видим, что переменные $c_01 , $c_02 и $c_06 приняли значение 1 (единица означает, что переменная имеет значение true )

Если выше в окне веб-браузера мы по отдельности выводили тип и значения переменных $c_01 , $c_02 , $c_03 , $c_04 , $c_05 и $c_06 , то теперь выведем тип и значение данных переменных в одну строку. Для этого воспользуемся функцией var_damp

В файле log.php допишем следующие строки кода:

echo ‘Переменная $c_01, равная $a $b, имеет тип и принимает значение:’; echo var_dump ($a > $b);

echo ‘Переменная $c_04, равная $a >= $b, имеет тип и принимает значение:’; echo var_dump ($a >= $b);

echo ‘Переменная $c_05, равная $a == $b, имеет тип и принимает значение:’; echo var_dump ($a == $b);

В итоге в окне веб-браузера видим результат работы функции var_damp :

Переменная $c_01, равная $a $b, имеет тип и принимает значение:bool(false) — переменная $c_03 имеет тип bool и значение false

Переменная $c_04, равная $a >= $b, имеет тип и принимает значение:bool(false) — переменная $c_04 имеет тип bool и значение false

Переменная $c_05, равная $a == $b, имеет тип и принимает значение:bool(false) — переменная $c_05 имеет тип bool и значение false

Рассмотрим, почему переменные (на примере $c_01 и $c_03 ) принимают значения true или false

Операторы сравнения

Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения. Возможно вам будет интересно также ознакомиться с разделом Сравнение типов, в котором приведено большое количество соответствующих примеров.

В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch. Преобразование типов не происходит при использовании === или !== так как в этом случае кроме самих значений сравниваются еще и типы.

true
var_dump ( «1» == «01» ); // 1 == 1 -> true
var_dump ( «10» == «1e1» ); // 10 == 10 -> true
var_dump ( 100 == «1e2» ); // 100 == 100 -> true

switch ( «a» ) <
case 0 :
echo «0» ;
break;
case «a» : // Эта ветка никогда не будет достигнута, так как «a» уже сопоставленно с 0
echo «a» ;
break;
>
?>

Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).

Пример #1 Сравнение булево/null

Пример #2 Алгоритм сравнения обычных массивов

Сравнение чисел с плавающей точкой

Из-за особого внутреннего представления float , не нужно проверять на равенство два float -числа.

Для более подробной информации смотрите документацию по типу float .

Тернарный оператор

Еще одним условным оператором является тернарный оператор «?:».

Пример #3 Присваивание значения по умолчанию

Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE , и expr3 в другом случае.

Замечание: Пожалуйста учтите, что тернарный оператор является выражением и трактуется не как переменная, а как результат выражения. Это важно знать, если вы хотите вернуть переменную по ссылке. Выражение return $var == 42 ? $a : $b; не будет работать в функции, возвращающей значение по ссылке, а в более поздних версиях PHP также будет выдано предупреждение.

Читать еще:  Вариант 1. Удалить страницу в Одноклассниках через веб-интерфейс.

Замечание:

Рекомендуется избегать «нагромождения» тернарных выражений. Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:

Пример #4 Неочевидное поведение тернарного оператора

Сравнение чисел с плавающей точкой

Из-за особого внутреннего представления типа float , не нужно проверять на равенство два числа с плавающей точкой ( float ).

Для более подробной информации смотрите документацию по типу float .

Тернарный оператор

Еще одним условным оператором является тернарный оператор «?:».

Пример #3 Присваивание значения по умолчанию

Начиная с версии PHP 5.3 также стало возможным не писать среднюю часть тернарного оператора. Выражение expr1 ?: expr3 возвращает expr1 если expr1 имеет значение TRUE и expr3 в противном случае.

Замечание: Обратите внимание, что тернарный оператор является выражением и трактуется не как переменная, а как результат выражения. Это важно знать, если вы хотите вернуть переменную по ссылке. Выражение return $var == 42 ? $a : $b; не будет работать в функции, возвращающей значение по ссылке, а в более поздних версиях PHP также будет выдано предупреждение.

Замечание:

Рекомендуется избегать «нагромождения» тернарных выражений. Поведение PHP неочевидно при использовании нескольких тернарных операторов в одном выражении:

Пример #4 Неочевидное поведение тернарного оператора

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

Также, начиная с PHP 7, добавился новый оператор «??» (null coalescing).

Пример #5 Присваивание значения по умолчанию

На практике, этот оператор не вызывает предупреждения, если левый операнд не существует, как и isset() . Это очень полезно для ключей массива.

Замечание: Пожалуйста помните, что этот оператор является выражением, и он приравнивается к выражению, а не значению переменной. Это может быть важным, если вы хотите вернуть значение по ссылке. Выражение return $foo ?? $bar; в функции возвращающей ссылку будет не работать, а выводить предупреждение.

Замечание:

Обратите внимание, что этот оператор позволяет использовать простую вложенность:

Пример #6 Вложенный оператор null coalescing

User Contributed Notes 39 notes

I couldn’t find much info on stacking the new ternary operator, so I ran some tests:

It works just as expected, returning the first non-false value within a group of expressions.

[Editor’s note: consider using ===]

I discover after 10 years of PHP development something awfull : even if you make a string comparison (both are strings), strings are tested like integers and leading «space» character (even n, r, t) is ignored .

I spent hours because of leading n in a string . it hurts my developper sensibility to see two strings beeing compared like integers and not like strings . I use strcmp now for string comparison . so stupid .

[1234] vs [1234]
string(4) «1234»
string(4) «1234»
EQUAL !

[1234] vs [ 1234]
string(4) «1234»
string(5) » 1234″
EQUAL !

[1234] vs [n1234]
string(4) «1234»
string(5) «n1234»
EQUAL !

[1234] vs [1234 ]
string(4) «1234»
string(5) «1234 »
DIFFERENT !

[1234] vs [1234n]
string(4) «1234»
string(5) «1234n»
DIFFERENT !

note: the behavior below is documented in the appendix K about type comparisons, but since it is somewhat buried i thought i should raise it here for people since it threw me for a loop until i figured it out completely.

just to clarify a tricky point about the == comparison operator when dealing with strings and numbers:

(‘some string’ == 0) returns TRUE

however, (‘123’ == 0) returns FALSE

also note that ((int) ‘some string’) returns 0

and ((int) ‘123’) returns 123

the behavior makes senes but you must be careful when comparing strings to numbers, e.g. when you’re comparing a request variable which you expect to be numeric. its easy to fall into the trap of:

if ($_GET[‘myvar’]==0) dosomething();

as this will dosomething() even when $_GET[‘myvar’] is ‘some string’ and clearly not the value 0

i was getting lazy with my types since php vars are so flexible, so be warned to pay attention to the details.

I was interested about the following two uses of the ternary operator (PHP >= 5.3) for using a «default» value if a variable is not set or evaluates to false:

The second is more readable, but will throw an ERR_NOTICE is $some_variable is not set. Of course, this could be overcome by suppressing the notice using the @ operator.

Performance-wise, though, comparing 1 million iterations of the three statements

results in the following:

$foo is NOT SET.
[isset] 0.18222403526306
[?:] 0.57496404647827
[@ ?:] 0.64780592918396
$foo is NULL.
[isset] 0.17995285987854
[?:] 0.15304207801819
[@ ?:] 0.20394206047058
$foo is FALSE.
[isset] 0.19388508796692
[?:] 0.15359902381897
[@ ?:] 0.20741701126099
$foo is TRUE.
[isset] 0.17265486717224
[?:] 0.11773896217346
[@ ?:] 0.16193103790283

In other words, using the long-form ternary operator with isset($some_variable) is preferable overall if $some_variable may not be set.

(error_reporting was set to zero for the benchmark, to avoid printing a million notices. )

php 5.6 vs php 7.0. Информация к размышлению

Переходить на php 7.0 или подождать? Вот и мы так долго думали, взвешивали, прикидывали. Однако вчера настал тот момент, когда нужно было быстро принять решение

Случилось то, чего не желает себе ни один веб-мастер, ни один сисадмин хайлоада. Портал стал тормозить от нагрузки. Приходящие посетители оплатившие доступ к закрытым материалам и просто посетители, идущая одновременно рассылка 100К+ подписчикам портала, хелпдеск не имеющий возможности адекватно работать с админкой и оказывать помощь людям

В результате вечером был совершен переход с php 5.6 на php 7.0

Краткие характеристики сервера

  • ОС: FreeBSD
  • RAM: 5Гб
  • CPU: Xeon E5335 2.00GHz * 4 (ядра)

Поскольку это FreeBSD и держать одновременно более одной версии php не представляется возможным (на самом деле можно, но с этим придется попариться), даунтайм был всего 40 минут, которые потребовались на снос php 5.6 и установку php 7.0

Кстати у нас есть еще сервер на Gentoo, которая предоставляет возможность установить несколько версий php. На данный момент там php 5.6, 7.0, 7.1. Но это к слову

И вот, что у нас получилось. Посмотрим на дневные графики, где в левой части день вчерашний, а справа день сегодняшний

Что не изменилось

Что изменилось

С какими мы столкнулись трудностями

  • В текущем php 7.0 нет модуля memcache. Пришлось скачивать сторонний порт php70-pecl-memcache
  • Нет модуля mysql. К этому нужно быть готовым и заранее предусмотреть в плане перехода переход на mysqli. Более-менее современные фреймворки поддерживают mysqli
  • Если используете pecl-pdflib, будте готовы к тому, что работать он не будет. Мы используем wkhtmltopdf
  • Часть портала использовала mpdf. Он не работает с php 7.0. Установили свежий при помощи composer
  • Провели легкий рефакторинг кода
Читать еще:  Ошибка «Не удается сохранить параметры и личные файлы…» при обновлении до Windows 10 1803 и ее устранение

Вывод

При том же количестве посетителей портала нагрузка на сервер упала в два раза

Блог Александра Денисюка

Два месяца назад я перешёл на PHP7 и в этом посте хочу поделиться нововведениями, которые пришлись по нраву мне больше всего. Во первых, переход на новую ветку PHP обусловлен приростом производительности и уменьшением потребляемых ресурсов, т. е. крупные сайты с PHP7 могут в два раза снизить расходы на хостинг и быстрее генерировать веб-страницу конечному пользователю. Здесь выигрывают сразу и владельцы сайтов, и их посетители.

Это сравнение скорости между версиями 5.6 и 7.0 на различных платформах. Zend Framework даёт прирост скорости на 133%, а WordPress — 129%. Такое улучшение PHP имеет позитивные последствия для бизнеса.

В прошлом году Badoo, WordPress.com, Tumblr и многие другие гиганты перешли на PHP7. Так, например, компании Badoo за счёт снижения CPU в два раза и уменьшения потребления памяти в 8 раз удалось сэкономить 1 млн долларов. Сайт WordPress.com также полностью переведён на PHP7, где прирост производительности действительно заметен:

https://t.co/VrQffeOtG0 has been 100% switched over to PHP7, bringing significant performance improvements. #wcus pic.twitter.com/MChiS9QBJh

Быстродействие в новых версиях стало самым крутым и обсуждаемым нововведением. Теперь не нужно заморачиваться по оптимизации каких-то участков кода, а сразу писать понятный и поддерживаемый код. Во вторых, в PHP 7.0 и 7.1 введено большое количество улучшений на уровне синтаксиса и функциональности. Далее на примерах я покажу, что мне понравилось в новых версиях и как эти нововведения поменяют язык PHP в будущем на уровне кода.

Замена тернарного оператора

На замену тернарного оператора пришёл «оператор объединения с null» или «null-коалесцентный оператор». Через два знака вопроса (??) можно указать цепочку значений в одну строку и будет выбрано первое значение, которое не равно null. Раньше этот подход применялся вместе с функцией isset(). Сейчас можно указать даже не существующие переменные и не мучатся c большой вложенностью как с тернарным оператором.

Групповое объявление классов, констант и функций

Начиная с версии 7.0 появилась возможность группировать объявления импорта классов, функций и констант, находящиеся в одном пространстве имён, в одной строке с помощью оператора use. Это нововведение на уровне синтаксического сахара, которое может наделить объявление имён каких-то компонентов определённой логикой.

Декларация типов и возвращаемых значений

Это самое мощное нововведение для ООП. Теперь при объявлении метода для каждой переменной можно указать свой тип, а также тип данных, который вернёт этот метод. В PHP 7.0 доступны следующие типы: array, callable, bool, float, int, string, имя класса или интерфейса. В версии 7.1 добавили ещё void и iterable. Тип void можно использовать только в возвращаемых значениях функций, которые ничего не возвращают. Псевдо-тип iterable используется в качестве значения массива или объекта, реализующего интерфейс Traversable.

В примере выше отработала принуждающая декларация типов, т. е. PHP динамически привёл значения к нужному типу, когда в переменную с объявленным типом int мы передали string, например. Вместо того, чтобы сгенерировать ошибку, все значения переменных и результат функции был преобразован к указанному типу на лету. Это поведение установлено по умолчанию.

Строгую типизацию можно включить, если в начале скрипта прописать declare(strict_types=1) . Все значения должны полностью соответствовать указанным типам. В противном случае будет сгенерирована ошибка TypeError. Строгая типизация не затрагивает весь остальной код и её нужно прописывать для каждого скрипта отдельно.

В версии 7.1 появилась возможность обнулить возвращаемые типы. Это расширяет список возвращаеммых типов до null. Теперь функция может вернуть какой-то явно указанный тип или null. Достигается такое поведение путём добавления префикса в виде знака вопроса к указанному типу:

Декларация типов и возвращаемых значений выводит PHP на новый уровень и эти нововведения мне нравятся больше всего, т. к. со стороны разработчика повышается читабельность кода; чёткая согласованность входных и выходных данных; программист может быстрее понять, чего ожидать от функции; легче документировать код; появляется возможность изменять типы данных на лету. Это основополагающая функциональность PHP7, которой не знать уже сейчас недопустимо.

Обработка ошибок и исключений

В PHP 7.0 появился новый класс для внутренних ошибок Error и интерфейс исключений Throwable. Теперь Error и старый класс Excetion реализуют Throwable (пользовательские классы не могут реализовывать данный интерфейс). Exception можно использовать для отлова исключений, которые будут обработаны и выполнение программы продолжится. Класс Error служит для необратимых исключений и выбрасывается в случае ошибки PHP или на уровне ошибок разработчиков.

Большинство ошибок уровня E_ERROR или E_RECOVERABLE_ERROR будут выбрасывать Error, но некоторые будут выбрасывать объекты подклассов: ArithmeticError, AssertionError, ParseError, DivisionByZeroError, TypeError и ArgumentCountError (с версии 7.1). Эти подклассы ошибок не могут быть брошены самостоятельно, а только лишь словлены. Иерархию всех исключений можно представить в виде дерева:

Начиная с версии 7.1 появилась возможность в блоке catch обрабатывать сразу несколько исключений, перечисляя их через символ вертикальной черты. Может быть полезно для обработки одинаковых по логике ошибок или пользовательских исключений.

На место фатальных ошибок пришли исключения, которые могут быть обработаны и позволяют корректно завершить программу в случае каких-то косяков. Это добавляет гибкости PHP-приложению.

Остальные нововведения одним списком

Нововведения в PHP7+ это лишь начало большого перехода на новый уровень языка. С каждым релизом приложения будут становиться быстрее и безопаснее. На версии 7.0 и 7.1 нужно отреагировать уже сегодня и будь в курсе новых тенденций PHP, дабы не выпадать из сферы. Ниже привожу одним списком остальные нововведения:

7.0 Оператор spaceship (космический корабль) ↩
7.0 Задание констант массивов с помощью define()
7.0 Появились анонимные классы ↩
7.0 Синтаксис кодирования Unicode ↩
7.0 Добавлен метод в замыкания Closure::call()
7.0 unserialize() с фильтрацией ↩
7.0 Новый класс IntlChar
7.0 Улучшена старая функция assert()
7.0 Выражение return в генераторах ↩
7.0 Делегация генератора с помощью конструкции yield from
7.0 Новая функция intdiv() для целочисленного деления ↩
7.0 session_start() принимает массив опций ↩
7.0 Новая функция preg_replace_callback_array()
7.0 Новые функции random_bytes() и random_int()
7.0 list() может раскрывать объекты реализующие ArrayAccess
7.0 Обращение к методам и свойствам класса при клонировании (clone $foo)->bar()
7.1 Короткий синтаксис для list()
7.1 Публичные и приватные константы классов ↩
7.1 Поддержка ключей в list()
7.1 Поддержка отрицательных смещений для строк ↩
7.1 Расширены функции openssl_encrypt() и openssl_decrypt()
7.1 Преобразование callable в Closure с помощью Closure::fromCallable()
7.1 Новая функция pcntl_async_signals()
7.1 Поддержка Server Push в CURL 7.46 ↩

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector