Учебники

PHP 7 — Краткое руководство

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.

Magento Сделки

Drupal 7

PHP 7 показал себя более чем в два раза быстрее, чем PHP 5.6 при выполнении транзакций Drupal.

Drupal транзакции

WordPress 3.6

PHP 7 показывает себя более чем в два раза быстрее по сравнению с PHP 5.6 при выполнении транзакций WordPress.

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 и более поздних версий —