Новые функции в PHP 5.6

Полное объяснение всех обновлений в PHP 5.6 слишком большое, одной статьи не хватит, поэтому обратим внимание на некоторые обновления PHP, которые веб-разработчики считают самыми важными.

Типы MIME веб-сервера CLI

MIME types в PHP может быть использован для вывода контента не только text/html. При запуске PHP страницы, по умолчанию вывод осуществляется как text/html, но вы можете использовать установки заголовков, например, PDF и создавать файлы PDF.

Сервер знает о разных типах MIME, потому что большинство серверов, такие как HHVM, Apache и Nginx как правило по умолчанию знают, что делать с файлом по его расширению, без необходимости устанавливать конкретные инструкции в самом PHP .

В командной строке сервера с PHP 5.4 было всего несколько MIME types, в версии PHP 5.6 будет в десятки раз больше. Можно с уверенностью сказать, что все распространенные типы MIME будут встроены в сервер с PHP 5.6.

Внутренняя перегрузка операторов

Эту функцию веб-разработчики PHP, скорее всего не будут менять, из-за слова internal что означает non userland , где userland применяется только для внутренних классов, для того, чтобы сделать код разработки в этой области проще и читаемым.

Загрузка файлов более 2 Gb

До версии PHP 5.6, загрузка файлов была до 2 ГБ, теперь будет больше. Но не так, как свойство changelog, и загрузка файлов произвольного размера теперь поддерживается.

Уменьшено потребление памяти

Использование памяти POST данных в PHP 5.6 уменьшилось в 2-3 раза и удалены переменные: always_populate_raw_post_data установлены в php.ini и суперглобальная переменная $HTTP_RAW_POST_DATA . Это означает, что вы можете потерять доступ к данным raw post, но есть решение:



$postdata = file_get_contents("php://input");


Обратите внимание, что сообщение не доступно через ://input , если форма будет multipart (другими словами, форма загрузки файла элемента).

Улучшенный синтаксис для функций variadic

Функция Variadic — может принимать произвольное количество аргументов. Когда вы определили некоторые аргументы, как правило, их нужно объединить после вызова функции func_get_args , которая была немного непрактична. Пример, который был раньше, взят из Синтаксис в 5.5 :



class MySQL implements DB {
  protected $pdo;
  public function query($query) {
    $stmt = $this->pdo->prepare($query);
    $stmt->execute(array_slice(func_get_args(), 1));
    return $stmt;
  }
  // ...
}

$userData = $db->query('SELECT * FROM users WHERE id = ?', $userID)->fetch();


теперь, синтаксис будет:



class MySQL implements DB {
  public function query($query, ...$params) {
    $stmt = $this->pdo->prepare($query);
    $stmt->execute($params);
    return $stmt;
  }
  // ...
}


Синтаксис ...$params указывает функции принимать в качестве первого параметра, а всё остальное в массив $params . Это освобождает нас от объединения и вызов func_get_params , улучшает функцию подписи, и делает код более читабельным.

Новый синтаксис также позволяет передавать дополнительные аргументы ссылке, с помощью префикса ...$params , например, так: &...$params . Раньше с функцией func_get_args сделать это, было невозможно.

Постоянное скалярное выражение

Добавлена возможность выражения RFC , в местах которые ожидают только статические значения. Это означает, что теперь у Вас есть базовые арифметические и логические структуры в объявлении константа, аргументов функций, свойств класса и др.

Например, раньше, такой код выдавал ошибку:



const a = 1;
const b = a?2:100;


Можно спорить, является ли постоянное действительно постоянным, если оно зависит от значения другой константы, но такие мета-дискуссии лучше оставить на другой раз.

PHPDBG по умолчанию в комплекте

Отладчик phpdbg, теперь по умолчанию в комплекте, как SAPI . Он используется из командной строки, или с упрощенного Java UI, указания точек останова в интерактивном режиме, изменять во время выполнения программы и многое другое. Он также может проверять операции, и используются в вашем коде PHP. Узнайте больше о phpdbg здесь .

Улучшения Zip

Библиотека Zip получила ряд улучшений, в частности, в виде новых методов. Один из них, который выделяется особенно ::setPassword($password) который наконец-то позволяет с легкостью создавать защищенные паролем Zip — файлы.

Импорт пространств имен функции

Согласно RFC , новая версия PHP позволит импортировать пространство имен функции и констант. Прямо сейчас мы можем импортировать пространство имен и типов следующим образом:



namespace foo\bar {
  function baz() {
    return 'foo.bar.baz';
  }
}

namespace {
  use foo\bar as b;
  var_dump(b\baz());
}


Начиная с PHP 5.6, мы сможем использовать функцию const для импорта одной функции или константы (даже класса констант).



namespace {
  use function foo\bar as foo_bar;
  use const foo\BAZ as FOO_BAZ;
  var_dump(foo_bar());
  var_dump(FOO_BAZ);
}


Заключение

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

Если Я пропустил что-то важное, или неправильно истолковал, пожалуйста, дайте мне знать в комментариях ниже.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML -теги и атрибуты: <a href= http://pixelcom.crimea.ua/"" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>