PHP 7 — Введение
PHP 7 является основным выпуском языка программирования PHP, и его рекламируют как революцию в способах разработки и доставки веб-приложений для мобильных устройств на предприятия и в облачную среду. Этот выпуск считается наиболее важным изменением для PHP после выпуска PHP 5 в 2004 году.
Новые возможности
В PHP 7 добавлены десятки функций, наиболее важные из которых упомянуты ниже —
-
Улучшенная производительность — слияние PHPNG-кода в PHP7 в два раза быстрее, чем в PHP 5.
-
Меньшее потребление памяти — оптимизированный PHP 7 использует меньше ресурсов.
-
Объявления скалярных типов — теперь можно применять параметры и возвращаемые типы.
-
Согласованная поддержка 64-разрядных систем — Согласованная поддержка машин с 64-разрядной архитектурой.
-
Улучшенная иерархия исключений — улучшена иерархия исключений.
-
Многие фатальные ошибки преобразуются в исключения — диапазон исключений увеличен, и многие фатальные ошибки преобразуются в исключения.
-
Безопасный генератор случайных чисел — добавление нового API безопасного генератора случайных чисел.
-
Устаревшие SAPI и расширения удалены — Различные старые и неподдерживаемые SAPI и расширения удалены из последней версии.
-
Нулевой оператор слияния (??) — Добавлен новый нуль-оператор объединения.
-
Объявления возврата и скалярного типа — добавлена поддержка типа возврата и типа параметра.
-
Анонимные классы — добавлена поддержка анонимных.
-
Подтверждение нулевой стоимости — добавлена поддержка подтверждения нулевой стоимости.
Улучшенная производительность — слияние PHPNG-кода в PHP7 в два раза быстрее, чем в PHP 5.
Меньшее потребление памяти — оптимизированный PHP 7 использует меньше ресурсов.
Объявления скалярных типов — теперь можно применять параметры и возвращаемые типы.
Согласованная поддержка 64-разрядных систем — Согласованная поддержка машин с 64-разрядной архитектурой.
Улучшенная иерархия исключений — улучшена иерархия исключений.
Многие фатальные ошибки преобразуются в исключения — диапазон исключений увеличен, и многие фатальные ошибки преобразуются в исключения.
Безопасный генератор случайных чисел — добавление нового API безопасного генератора случайных чисел.
Устаревшие SAPI и расширения удалены — Различные старые и неподдерживаемые SAPI и расширения удалены из последней версии.
Нулевой оператор слияния (??) — Добавлен новый нуль-оператор объединения.
Объявления возврата и скалярного типа — добавлена поддержка типа возврата и типа параметра.
Анонимные классы — добавлена поддержка анонимных.
Подтверждение нулевой стоимости — добавлена поддержка подтверждения нулевой стоимости.
PHP 7 использует новый Zend Engine 3.0 для повышения производительности приложений почти вдвое и на 50% лучшего потребления памяти, чем PHP 5.6. Это позволяет обслуживать более одновременных пользователей, не требуя дополнительного оборудования. PHP 7 разработан и переработан с учетом сегодняшних рабочих нагрузок.
PHP 7 — Производительность
Согласно команде Zend , на следующих рисунках показано сравнение производительности PHP 7 с PHP 5.6 и HHVM 3.7 в популярных приложениях на основе PHP.
Magento 1.9
PHP 7 показывает себя более чем в два раза быстрее, чем PHP 5.6 при выполнении транзакций Magento.
Drupal 7
PHP 7 показал себя более чем в два раза быстрее, чем PHP 5.6 при выполнении транзакций Drupal.
WordPress 3.6
PHP 7 показывает себя более чем в два раза быстрее по сравнению с PHP 5.6 при выполнении транзакций WordPress.
Сравнение динамических языков
PHP 7 — Настройка среды
Попробуйте вариант онлайн
Мы настроили среду программирования PHP онлайн, чтобы вы могли скомпилировать и выполнить все доступные примеры в режиме онлайн. Это дает вам уверенность в том, что вы читаете, и позволяет вам проверять программы с различными вариантами. Не стесняйтесь изменять любой пример и выполнять его онлайн.
Попробуйте следующий пример, используя наш онлайн-компилятор, доступный на CodingGround.
<html> <head> <title>Online PHP Script Execution</title> </head> <body> <?php echo "<h1>Hello, PHP!</h1>"; ?> </body> </html>Для большинства примеров, приведенных в этом руководстве, вы найдете опцию Try it в разделах кода нашего сайта в верхнем правом углу, которые приведут вас к онлайн-компилятору. Так что просто пользуйтесь и наслаждайтесь обучением.
Мы настроили среду программирования PHP онлайн, чтобы вы могли скомпилировать и выполнить все доступные примеры в режиме онлайн. Это дает вам уверенность в том, что вы читаете, и позволяет вам проверять программы с различными вариантами. Не стесняйтесь изменять любой пример и выполнять его онлайн.
Попробуйте следующий пример, используя наш онлайн-компилятор, доступный на CodingGround.
Для большинства примеров, приведенных в этом руководстве, вы найдете опцию Try it в разделах кода нашего сайта в верхнем правом углу, которые приведут вас к онлайн-компилятору. Так что просто пользуйтесь и наслаждайтесь обучением.
Для разработки и запуска веб-страниц PHP в вашей компьютерной системе должны быть установлены три важных компонента.
-
Веб-сервер — PHP работает практически со всем программным обеспечением веб-сервера, включая Internet Information Server (IIS) от Microsoft, но чаще всего используется Apache Server. Загрузите Apache бесплатно здесь — http://httpd.apache.org/download.cgi
-
База данных — PHP PHP работает практически со всеми программами баз данных, включая Oracle и Sybase, но чаще всего используется база данных MySQL. Скачать MySQL бесплатно здесь — http://www.mysql.com/downloads/
-
PHP Parser — для обработки инструкций PHP-скрипта необходимо установить парсер для генерации HTML-вывода, который можно отправить в веб-браузер. Из этого туториала Вы узнаете, как установить парсер PHP на свой компьютер.
Веб-сервер — PHP работает практически со всем программным обеспечением веб-сервера, включая Internet Information Server (IIS) от Microsoft, но чаще всего используется Apache Server. Загрузите Apache бесплатно здесь — http://httpd.apache.org/download.cgi
База данных — PHP PHP работает практически со всеми программами баз данных, включая Oracle и Sybase, но чаще всего используется база данных MySQL. Скачать MySQL бесплатно здесь — http://www.mysql.com/downloads/
PHP Parser — для обработки инструкций PHP-скрипта необходимо установить парсер для генерации HTML-вывода, который можно отправить в веб-браузер. Из этого туториала Вы узнаете, как установить парсер PHP на свой компьютер.
Установка PHP Parser
Прежде чем продолжить, важно убедиться, что на вашем компьютере правильно настроена среда для разработки ваших веб-программ с использованием PHP. Сохраните следующий php-файл в папке Apache htdocs.
phpinfo.php
<?php phpinfo(); ?>
Введите следующий адрес в адресную строку браузера.
http://127.0.0.1/phpinfo.php
Если отобразится страница с информацией о вашей установке PHP, то это означает, что у вас правильно установлен PHP и веб-сервер. В противном случае вы должны следовать данной процедуре, чтобы установить PHP на свой компьютер.
Этот раздел поможет вам установить и настроить PHP на следующих четырех платформах:
Установка PHP на Linux или Unix с Apache
Установка PHP на Mac OS X с Apache
Установка PHP в Windows NT / 2000 / XP с IIS
Установка PHP в Windows NT / 2000 / XP с Apache
Конфигурация Apache
Если вы используете Apache в качестве веб-сервера, этот раздел поможет вам отредактировать файлы конфигурации Apache.
Проверьте здесь — Конфигурация PHP в Apache Server
Конфигурация файла PHP.INI
Файл конфигурации PHP, php.ini , является последним и непосредственным способом повлиять на функциональность PHP.
Проверьте здесь — Конфигурация файла PHP.INI
Конфигурация Windows IIS
Чтобы настроить IIS на вашем компьютере с Windows, вы можете обратиться к своему Справочному руководству по IIS, поставляемому вместе с IIS.
PHP 7 — Скалярные объявления типов
В PHP 7 была введена новая функция — объявления типов Scalar. Объявление типа скалярного типа имеет две опции:
-
принудительный — принудительный режим является режимом по умолчанию и не требует указания.
-
строгий — строгий режим должен явно намекнуть.
принудительный — принудительный режим является режимом по умолчанию и не требует указания.
строгий — строгий режим должен явно намекнуть.
Следующие типы параметров функции могут быть применены с использованием вышеуказанных режимов —
- ИНТ
- поплавок
- BOOL
- строка
- интерфейсы
- массив
- подлежащий выкупу
Пример — принудительный режим
<?php // Coercive mode function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
Это производит следующий вывод браузера —
9
Пример — строгий режим
<?php // Strict mode declare(strict_types=1); function sum(int ...$ints) { return array_sum($ints); } print(sum(2, '3', 4.1)); ?>
Это производит следующий вывод браузера —
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, string given, ...
PHP 7 — декларации возвращаемых типов
В PHP 7 была добавлена новая функция декларации типов возврата . Объявление возвращаемого типа определяет тип значения, которое должна возвращать функция. Следующие типы для типов возврата могут быть объявлены.
- ИНТ
- поплавок
- BOOL
- строка
- интерфейсы
- массив
- подлежащий выкупу
Пример — допустимый тип возврата
<?php declare(strict_types = 1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
Это производит следующий вывод браузера —
5
Пример — неверный тип возврата
<?php declare(strict_types = 1); function returnIntValue(int $value): int { return $value + 1.0; } print(returnIntValue(5)); ?>
Это производит следующий вывод браузера —
Fatal error: Uncaught TypeError: Return value of returnIntValue() must be of the type integer, float returned...
PHP 7 — нулевой оператор объединения
В PHP 7 была добавлена новая функция — оператор объединения нулей (??) . Он используется для замены троичной операции в сочетании с функцией isset (). Оператор объединения Null возвращает свой первый операнд, если он существует и не равен NULL; в противном случае он возвращает свой второй операнд.
пример
<?php // fetch the value of $_GET['user'] and returns 'not passed' // if username is not passed $username = $_GET['username'] ?? 'not passed'; print($username); print("<br/>"); // Equivalent code using ternary operator $username = isset($_GET['username']) ? $_GET['username'] : 'not passed'; print($username); print("<br/>"); // Chaining ?? operation $username = $_GET['username'] ?? $_POST['username'] ?? 'not passed'; print($username); ?>
Это производит следующий вывод браузера —
not passed not passed not passed
PHP 7 — оператор космического корабля
В PHP 7 появилась новая функция — оператор космического корабля. Используется для сравнения двух выражений. Возвращает -1, 0 или 1, когда первое выражение соответственно меньше, равно или больше второго выражения.
пример
<?php //integer comparison print( 1 <=> 1);print("<br/>"); print( 1 <=> 2);print("<br/>"); print( 2 <=> 1);print("<br/>"); print("<br/>"); //float comparison print( 1.5 <=> 1.5);print("<br/>"); print( 1.5 <=> 2.5);print("<br/>"); print( 2.5 <=> 1.5);print("<br/>"); print("<br/>"); //string comparison print( "a" <=> "a");print("<br/>"); print( "a" <=> "b");print("<br/>"); print( "b" <=> "a");print("<br/>"); ?>
Это производит следующий вывод браузера —
0 -1 1 0 -1 1 0 -1 1
PHP 7 — постоянные массивы
Константы массива теперь можно определить с помощью функции define () . В PHP 5.6 их можно было определить только с помощью ключевого слова const .
пример
<?php //define a array using define function define('animals', [ 'dog', 'cat', 'bird' ]); print(animals[1]); ?>
Это производит следующий вывод браузера —
cat
PHP 7 — анонимные классы
Анонимные классы теперь могут быть определены с использованием нового класса. Анонимный класс может использоваться вместо полного определения класса.
пример
<?php interface Logger { public function log(string $msg); } class Application { private $logger; public function getLogger(): Logger { return $this->logger; } public function setLogger(Logger $logger) { $this->logger = $logger; } } $app = new Application; $app->setLogger(new class implements Logger { public function log(string $msg) { print($msg); } }); $app->getLogger()->log("My first Log Message"); ?>
Это производит следующий вывод браузера —
My first Log Message
PHP 7 — Закрытие :: вызов ()
Метод Closure :: call () добавлен как сокращенный способ временно привязать область объекта к замыканию и вызвать его. Это намного быстрее по сравнению с bindTo в PHP 5.6.
Пример — до PHP 7
<?php class A { private $x = 1; } // Define a closure Pre PHP 7 code $getValue = function() { return $this->x; }; // Bind a clousure $value = $getValue->bindTo(new A, 'A'); print($value()); ?>
Это производит следующий вывод браузера —
1
Пример — PHP 7+
<?php class A { private $x = 1; } // PHP 7+ code, Define $value = function() { return $this->x; }; print($value->call(new A)); ?>
Это производит следующий вывод браузера —
1
PHP 7 — отфильтрованный unserialize ()
В PHP 7 введена функция Filtered unserialize () для обеспечения большей безопасности при десериализации объектов на ненадежных данных. Это предотвращает возможные внедрения кода и позволяет разработчику создавать классы белого списка, которые могут быть не сериализованы.
пример
<?php class MyClass1 { public $obj1prop; } class MyClass2 { public $obj2prop; } $obj1 = new MyClass1(); $obj1->obj1prop = 1; $obj2 = new MyClass2(); $obj2->obj2prop = 2; $serializedObj1 = serialize($obj1); $serializedObj2 = serialize($obj2); // default behaviour that accepts all classes // second argument can be ommited. // if allowed_classes is passed as false, unserialize converts all objects into __PHP_Incomplete_Class object $data = unserialize($serializedObj1 , ["allowed_classes" => true]); // converts all objects into __PHP_Incomplete_Class object except those of MyClass1 and MyClass2 $data2 = unserialize($serializedObj2 , ["allowed_classes" => ["MyClass1", "MyClass2"]]); print($data->obj1prop); print("<br/>"); print($data2->obj2prop); ?>
Это производит следующий вывод браузера —
1 2
PHP 7 — IntlChar
В PHP7 добавлен новый класс IntlChar , который стремится предоставить дополнительные функциональные возможности ICU. Этот класс определяет ряд статических методов и констант, которые можно использовать для манипулирования символами Юникода. Вам необходимо установить расширение Intl перед использованием этого класса.
пример
<?php printf('%x', IntlChar::CODEPOINT_MAX); print (IntlChar::charName('@')); print(IntlChar::ispunct('!')); ?>
Это производит следующий вывод браузера —
10ffff COMMERCIAL AT true
PHP 7 — CSPRNG
В PHP 7 следующие две новые функции введены для генерации криптографически безопасных целых чисел и строк кросс-платформенным способом.
-
random_bytes () — генерирует криптографически защищенные псевдослучайные байты.
-
random_int () — генерирует криптографически безопасные псевдослучайные целые числа.
random_bytes () — генерирует криптографически защищенные псевдослучайные байты.
random_int () — генерирует криптографически безопасные псевдослучайные целые числа.
random_bytes ()
random_bytes () генерирует строку произвольной длины из криптографических случайных байтов, которые подходят для криптографического использования, например, при генерации солей, ключей или векторов инициализации.
Синтаксис
string random_bytes ( int $length )
параметры
-
длина — длина случайной строки, которая должна быть возвращена в байтах.
длина — длина случайной строки, которая должна быть возвращена в байтах.
Возвращаемые значения
-
Возвращает строку, содержащую запрошенное количество криптографически безопасных случайных байтов.
Возвращает строку, содержащую запрошенное количество криптографически безопасных случайных байтов.
Ошибки / Исключения
-
Если соответствующий источник случайности не может быть найден, будет выдано исключение.
-
Если заданы недопустимые параметры, выдается ошибка TypeError .
-
Если задана недопустимая длина байтов, выдается ошибка.
Если соответствующий источник случайности не может быть найден, будет выдано исключение.
Если заданы недопустимые параметры, выдается ошибка TypeError .
Если задана недопустимая длина байтов, выдается ошибка.
пример
<?php $bytes = random_bytes(5); print(bin2hex($bytes)); ?>
Это производит следующий вывод браузера —
54cc305593
random_int ()
random_int () генерирует криптографические случайные целые числа, которые подходят для использования, когда несмещенные результаты являются критическими.
Синтаксис
int random_int ( int $min , int $max )
параметры
-
min — минимальное возвращаемое значение, которое должно быть PHP_INT_MIN или выше.
-
max — максимальное возвращаемое значение, которое должно быть меньше или равно PHP_INT_MAX .
min — минимальное возвращаемое значение, которое должно быть PHP_INT_MIN или выше.
max — максимальное возвращаемое значение, которое должно быть меньше или равно PHP_INT_MAX .
Возвращаемые значения
-
Возвращает криптографически безопасное случайное целое число в диапазоне от минимального до максимального включительно.
Возвращает криптографически безопасное случайное целое число в диапазоне от минимального до максимального включительно.
Ошибки / Исключения
-
Если соответствующий источник случайности не может быть найден, будет выдано исключение .
-
Если заданы недопустимые параметры, выдается ошибка TypeError .
-
Если max меньше min, выдается ошибка .
Если соответствующий источник случайности не может быть найден, будет выдано исключение .
Если заданы недопустимые параметры, выдается ошибка TypeError .
Если max меньше min, выдается ошибка .
пример
<?php print(random_int(100, 999)); print(" "); print(random_int(-1000, 0)); ?>
Это производит следующий вывод браузера —
614 -882
PHP 7 — ожидания
Ожидания являются обратно совместимым улучшением более старой функции assert (). Ожидание допускает утверждения с нулевой стоимостью в производственном коде и предоставляет возможность генерировать пользовательские исключения в случае сбоя подтверждения. assert () теперь является языковой конструкцией, где первый параметр является выражением по сравнению с тем, что он является строкой или логическим значением для тестирования.
Директивы конфигурации для assert ()
директива | Значение по умолчанию | Возможные значения |
---|---|---|
zend.assertions | 1 |
1 — сгенерировать и выполнить код (режим разработки) 0 — генерировать код, но прыгать вокруг него во время выполнения -1 — не генерировать код (режим производства) |
assert.exception | 0 |
1 — выбросить, когда утверждение не выполнено, либо путем выброса объекта, предоставленного в качестве исключения, либо путем выброса нового объекта AssertionError, если исключение не было предоставлено. 0 — использовать или генерировать Throwable, как описано выше, но генерирует только предупреждение, основанное на этом объекте, а не выбрасывая его (совместимо с поведением PHP 5) |
1 — сгенерировать и выполнить код (режим разработки)
0 — генерировать код, но прыгать вокруг него во время выполнения
-1 — не генерировать код (режим производства)
1 — выбросить, когда утверждение не выполнено, либо путем выброса объекта, предоставленного в качестве исключения, либо путем выброса нового объекта AssertionError, если исключение не было предоставлено.
0 — использовать или генерировать Throwable, как описано выше, но генерирует только предупреждение, основанное на этом объекте, а не выбрасывая его (совместимо с поведением PHP 5)
параметры
-
утверждение — утверждение. В PHP 5 это должна быть либо строка для оценки, либо логическое значение для проверки. В PHP 7 это также может быть любое выражение, которое возвращает значение, которое будет выполнено, и результат используется, чтобы указать, было ли подтверждение успешным или неудачным.
-
description — необязательное описание, которое будет включено в сообщение об ошибке, если утверждение не выполнено.
-
исключение — в PHP 7 вторым параметром может быть объект Throwable вместо описательной строки, и в этом случае это объект, который будет брошен, если утверждение не выполнено и директива конфигурации assert.exception включена.
утверждение — утверждение. В PHP 5 это должна быть либо строка для оценки, либо логическое значение для проверки. В PHP 7 это также может быть любое выражение, которое возвращает значение, которое будет выполнено, и результат используется, чтобы указать, было ли подтверждение успешным или неудачным.
description — необязательное описание, которое будет включено в сообщение об ошибке, если утверждение не выполнено.
исключение — в PHP 7 вторым параметром может быть объект Throwable вместо описательной строки, и в этом случае это объект, который будет брошен, если утверждение не выполнено и директива конфигурации assert.exception включена.
Возвращаемые значения
ЛОЖЬ, если утверждение ложно, ИСТИНА в противном случае.
пример
<?php ini_set('assert.exception', 1); class CustomError extends AssertionError {} assert(false, new CustomError('Custom Error Message!')); ?>
Это производит следующий вывод браузера —
Fatal error: Uncaught CustomError: Custom Error Message! in...
PHP 7 — Заявление об использовании
Начиная с PHP7, один оператор использования может использоваться для импорта классов, функций и констант из одного пространства имен вместо операторов многократного использования.
пример
<?php // Before PHP 7 use com\tutorialspoint\ClassA; use com\tutorialspoint\ClassB; use com\tutorialspoint\ClassC as C; use function com\tutorialspoint\fn_a; use function com\tutorialspoint\fn_b; use function com\tutorialspoint\fn_c; use const com\tutorialspoint\ConstA; use const com\tutorialspoint\ConstB; use const com\tutorialspoint\ConstC; // PHP 7+ code use com\tutorialspoint\{ClassA, ClassB, ClassC as C}; use function com\tutorialspoint\{fn_a, fn_b, fn_c}; use const com\tutorialspoint\{ConstA, ConstB, ConstC}; ?>
PHP 7 — Обработка ошибок
Начиная с PHP 7, обработка ошибок и отчеты были изменены. Вместо того, чтобы сообщать об ошибках с помощью традиционного механизма сообщений об ошибках, используемого в PHP 5, теперь большинство ошибок обрабатываются с помощью исключения ошибок. Подобно исключениям, эти исключения ошибок всплывают до тех пор, пока не достигнут первого соответствующего блока catch. Если совпадающих блоков нет, будет вызван обработчик исключений по умолчанию, установленный с помощью set_exception_handler () . В случае отсутствия обработчика исключений по умолчанию, исключение будет преобразовано в фатальную ошибку и будет обработано как традиционная ошибка.
Поскольку иерархия ошибок не расширена из исключения, код, использующий блоки catch (Exception $ e) {…} для обработки необработанных исключений в PHP 5, не будет обрабатывать такие ошибки. Блок catch (Ошибка $ e) {…} или обработчик set_exception_handler () необходимы для обработки фатальных ошибок.
пример
<?php class MathOperations { protected $n = 10; // Try to get the Division by Zero error object and display as Exception public function doOperation(): string { try { $value = $this->n % 0; return $value; } catch (DivisionByZeroError $e) { return $e->getMessage(); } } } $mathOperationsObj = new MathOperations(); print($mathOperationsObj->doOperation()); ?>
Это производит следующий вывод браузера —
Modulo by zero
PHP 7 — Целочисленное деление
PHP 7 представляет новую функцию intdiv () , которая выполняет целочисленное деление своих операндов и возвращает деление как int.
пример
<?php $value = intdiv(10,3); var_dump($value); print(" "); print($value); ?>
Это производит следующий вывод браузера —
int(3) 3
PHP 7 — Параметры сеанса
Начиная с PHP7 +, функция session_start () принимает массив опций для переопределения директив конфигурации сеанса, установленных в php.ini . Эти параметры поддерживают файл session.lazy_write , который по умолчанию включен и заставляет PHP перезаписывать любой файл сеанса, если данные сеанса изменились.
Другой добавленный параметр — read_and_close , который указывает, что данные сеанса должны быть прочитаны, а затем сеанс должен быть немедленно закрыт без изменений. Например, установите для session.cache_limiter значение private и установите флаг, чтобы закрыть сеанс сразу после его чтения, используя следующий фрагмент кода.
<?php session_start([ 'cache_limiter' => 'private', 'read_and_close' => true, ]); ?>
PHP 7 — Устаревшие возможности
Следующие функции устарели и могут быть удалены из будущих выпусков PHP.
Конструкторы в стиле PHP 4
Конструкторы в стиле PHP 4 — это методы, имеющие то же имя, что и класс, в котором они определены, в настоящее время устарели и будут удалены в будущем. PHP 7 будет выдавать E_DEPRECATED, если конструктор PHP 4 является единственным конструктором, определенным в классе. Классы, реализующие метод __construct (), не затрагиваются.
пример
<?php class A { function A() { print('Style Constructor'); } } ?>
Это производит следующий вывод браузера —
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; A has a deprecated constructor in...
Статические вызовы нестатических методов
Статические вызовы нестатических методов устарели и могут быть удалены в будущем.
пример
<?php class A { function b() { print('Non-static call'); } } A::b(); ?>
Это производит следующий вывод браузера —
Deprecated: Non-static method A::b() should not be called statically in... Non-static call
password_hash () солевой вариант
Параметр соли для функции password_hash () устарел, поэтому разработчики не генерируют свои собственные (обычно небезопасные) соли. Сама функция генерирует криптографически безопасную соль, когда разработчик не предоставляет соль — таким образом, пользовательская генерация соли больше не требуется.
опция контекста SSL capture_session_meta
Параметр контекста capture_session_meta SSL устарел. Метаданные SSL теперь используются через функцию stream_get_meta_data () .
PHP 7 — Удаленные расширения и SAPI
Следующие расширения были удалены из PHP 7 и более поздних версий —
- EREG
- MSSQL
- MySQL
- sybase_ct
Следующие SAPI были удалены из PHP 7 и более поздних версий —