16
Конференция PhpDev.by Сайт: http://phpdevby.com Твиттер: #phpdevby

PHP 5.4: Что нового?

Embed Size (px)

Citation preview

Page 1: PHP 5.4: Что нового?

Конференция PhpDev.by

Сайт: http://phpdevby.comТвиттер: #phpdevby

Page 2: PHP 5.4: Что нового?

PHP 5.4 Что нового?

Высоцкий Артем@avysotsky

Page 3: PHP 5.4: Что нового?

Содержание

ВведениеПроизводительностьНовинки

Traits или типажи ЗамыканияВстроенный HTTP серверМассивы: синтаксис и разыменованиеUpload progressОбъектно ориентированные обработчики сессииКосвенный вызов метода переменной массива

DeprecationsЗаключение

Page 4: PHP 5.4: Что нового?

Введение

На 21.01.2012 – выпущен RC5

Много плюшекНе готов к продакшенуETA - Q1 2012 (завтра?)

Он не дождался PHP5.4

Page 5: PHP 5.4: Что нового?

Производительность

http://www.slideshare.net/paulgao/come-on-php-54http://www.internetnews.com/skerner/2010/11/php-54-set-to-boost-performanc.htmlhttp://blog.slo-host.com/2011/09/performance-improvements-in-php-5-4-0/

Page 6: PHP 5.4: Что нового?

Новинки. Трейты. Почувствуй силу

trait ezcReflectionReturnInfo {    function getReturnType() { /*1*/ }    function getReturnDescription() { /*2*/ }}

class ezcReflectionMethod extends ReflectionMethod {    use ezcReflectionReturnInfo;    /* ... */}

class ezcReflectionFunction extends ReflectionFunction {    use ezcReflectionReturnInfo;    /* ... */}

Page 7: PHP 5.4: Что нового?

Новинки. Трейты в деталях

Несколько трейтовРазрешение конфликтов (insteadof,

as)Изменение видимости метода (as)Трейты из трейтовАбстрактные методыСтатические методыСвойства__CLASS__

Page 8: PHP 5.4: Что нового?

Новинки. Встроеный веб сервер или Апачи отдыхает

$ cd ~/public_html$ php -S localhost:8000 router.php PHP 5.4.0 Development Server started at Thu Jul 21 10:53:19 2011 Listening on localhost:8000 Document root is /home/me/public_html Press Ctrl-C to quit. [Thu Jul 21 10:53:45 2011] ::1:55801 GET /mylogo.jpg - Request read [Thu Jul 21 10:53:52 2011] ::1:55803 GET /abc.html - Request read [Thu Jul 21 10:53:52 2011] ::1:55804 GET /favicon.ico - Request read

Page 9: PHP 5.4: Что нового?

Новинки. Массивы: новый синтаксис и разыменование. Наконец-то.

//Square bracket array shortcut - keys and values are separated by colons:

$a = [1, 2, 3]; $b = ['foo': 'orange', 'bar': 'apple', 'baz': 'lemon']; //Square bracket array shortcut - keys and values are separated by double arrows: $a = [1, 2, 3]; $b = ['foo' => 'orange', 'bar' => 'apple', 'baz' => 'lemon'];

function fruit () {   return array('a' => 'apple', 'b' => 'banana'); }   echo fruit()['a']; // apple

Page 10: PHP 5.4: Что нового?

Новинка. Прогресс загрузки

<form action="upload.php" method="POST" enctype="multipart/form-data">  <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />  <input type="file" name="file1" />  <input type="submit" /> </form>

$_SESSION["upload_progress_123"] = array(  "start_time" => 1234567890, // The request time "content_length" => 57343257, // POST content length "bytes_processed" => 453489, // Amount of bytes received and processed "done" => false, // true when the POST handler has finished, successfully or not "files" => array(   0 => array(    "field_name" => "file1", // Name of the <input/> field    // The following 3 elements equals those in $_FILES "name" => "foo.avi",    "tmp_name" => "/tmp/phpxxxxxx",    "error" => 0,    "done" => true, // True when the POST handler has finished handling this file "start_time" => 1234567890, // When this file has started to be processed "bytes_processed" => 57343250, // Amount of bytes received and processed for this file ) );

Page 11: PHP 5.4: Что нового?

Новинка. Объектно ориентированный обработчик сессии. Мелочь, а приятно.

5.3

5.4

Page 12: PHP 5.4: Что нового?

Новинка. Косвенный вызов метода переменной массива.

class Hello {    public function world($x) {       echo "Hello, $x\n"; return $this;    } }     $f = array('Hello','world'); var_dump($f('you')); // Hello, you

Page 13: PHP 5.4: Что нового?

Deprecations. Запреты и не только.

• Прекращение поддержки всех опций, связанных с "Safe mode";

• Прекращение поддержки синтаксиса "break/continue $var"

• Удаление опций register_globals, define_syslog_variables, highlight.bg, session.bug_compat42, session.bug_compat_warn, y2k_compliance, allow_call_time_pass_reference и register_long_arrays;

• Удаление функций session_is_regisitered(), session_registered() и session_unregister().

Page 14: PHP 5.4: Что нового?

И это все? Нет! Что же я забыл?

• Перемещение встроенного расширения ext/sqlite во внешний каталог PECL (изменение не касается sqlite3, поддержка которого будет по прежнему встроена);

• Увеличена производительность парсинга запросов в FastCGI;• В $_SERVER['REQUEST_TIME'] теперь передается время с указанием микросекунд;• default_charset, вместо ISO-8859-1 теперь UTF-8;• По умолчанию режим поддержки многобайтовых кодировок. Для выключения

добавлена директива zend.multibyte;• Поддержка замыкания $this;• Добавлена поддержка использования ссылок на объекты при рекурсивном вызове

serialize();• Новые функции: http_response_code(), header_register_callback();• Увеличена производительность функции unserialize();• Добавлена поддержка "stream metadata API: в класс stream_metadata();• Разнообразные улучшения отмечаются почти во всех стандартных расширениях;

Page 15: PHP 5.4: Что нового?

Заключение

Быстро, круто, но не готово для продакшена А что больше всего понравилось Вам?

Traits или типажи ЗамыканияВстроенный HTTP серверМассивы: синтаксис и разыменованиеUpload progressОбъектно ориентированные обработчики сессииКосвенный вызов метода переменной массива

Page 16: PHP 5.4: Что нового?

Skype: artvys_seoulTwitter: @avysotskyEmail: [email protected]