SlideShare a Scribd company logo
1 of 16
Конференция PhpDev.by




Сайт: http://phpdevby.com
Твиттер: #phpdevby
PHP 5.4
Что нового?
 Высоцкий Артем
   @avysotsky
Содержание

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


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




                                   Он не дождался PHP5.4
Производительность




     http://www.slideshare.net/paulgao/come-on-php-54
     http://www.internetnews.com/skerner/2010/11/php-54-set-to-boost-performanc.html
     http://blog.slo-host.com/2011/09/performance-improvements-in-php-5-4-0/
Новинки. Трейты. Почувствуй
                          силу

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

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

class ezcReflectionFunction extends ReflectionFunction {
    use ezcReflectionReturnInfo;
    /* ... */
}
Новинки. Трейты в деталях




   Несколько трейтов
   Разрешение конфликтов (insteadof, as)
   Изменение видимости метода (as)
   Трейты из трейтов
   Абстрактные методы
   Статические методы
   Свойства
   __CLASS__
Новинки. Встроеный веб сервер или Апачи
                                    отдыхает 




$ 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
Новинки. Массивы: новый синтаксис и
                            разыменование. Наконец-то.

//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
Новинка. Прогресс загрузки

<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
)
);
Новинка. Объектно ориентированный обработчик
                сессии. Мелочь, а приятно.


5.3



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


 class Hello {
    public function world($x) {
       echo "Hello, $xn"; return $this;
    }
 }


 $f = array('Hello','world');
 var_dump($f('you')); // Hello, you
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().
И это все? Нет! Что же я забыл?

•   Перемещение встроенного расширения 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();
•   Разнообразные улучшения отмечаются почти во всех стандартных расширениях;
Заключение
 Быстро, круто, но не готово для продакшена 
 А что больше всего понравилось Вам?
      Traits или типажи
      Замыкания
      Встроенный HTTP сервер
      Массивы: синтаксис и разыменование
      Upload progress
      Объектно ориентированные обработчики сессии
      Косвенный вызов метода переменной массива
Skype: artvys_seoul
Twitter: @avysotsky
Email: artem.vysotsky@gmail.com

More Related Content

What's hot

Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам AnsibleDenis Honig
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...rit2011
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченкоsolit
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервераRoman Brovko
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоFuenteovejuna
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовFuenteovejuna
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...AvitoTech
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9Technopark
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколыRoman Brovko
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3Technopark
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1Technopark
 
RDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRAMBLER&Co
 
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)Andrey Smirnov
 
Сладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и ZephirСладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и ZephirCodeFest
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
Retro vs Volley
Retro vs VolleyRetro vs Volley
Retro vs VolleyArtjoker
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)AvitoTech
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Anastasia Lubennikova
 

What's hot (20)

Зачем программистам Ansible
Зачем программистам AnsibleЗачем программистам Ansible
Зачем программистам Ansible
 
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
сотни серверов, десятки компонент. автоматизация раскладки и конфигурирования...
 
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван ЗахарченкоSolit 2012, Enterprise разработка PHP приложений, Иван Захарченко
Solit 2012, Enterprise разработка PHP приложений, Иван Захарченко
 
07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера07 - Web-технологии. Web-сервера
07 - Web-технологии. Web-сервера
 
Компиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей РоманенкоКомпиляция скриптов PHP. Алексей Романенко
Компиляция скриптов PHP. Алексей Романенко
 
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай КондратовБыстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
 
Coroutines
CoroutinesCoroutines
Coroutines
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
 
Web осень 2013 лекция 9
Web осень 2013 лекция 9Web осень 2013 лекция 9
Web осень 2013 лекция 9
 
05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы05 - Web-технологии. Сетевые протоколы
05 - Web-технологии. Сетевые протоколы
 
Web осень 2013 лекция 3
Web осень 2013 лекция 3Web осень 2013 лекция 3
Web осень 2013 лекция 3
 
Web осень 2013 лекция 1
Web осень 2013 лекция 1Web осень 2013 лекция 1
Web осень 2013 лекция 1
 
RDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на SwiftRDSDataSource: Чистые тесты на Swift
RDSDataSource: Чистые тесты на Swift
 
Erlang tasty & useful stuff
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuff
 
aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)aptly: система управления репозиториями пакетов (РИТ-2014)
aptly: система управления репозиториями пакетов (РИТ-2014)
 
Сладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и ZephirСладкое будущее: Phalcon и Zephir
Сладкое будущее: Phalcon и Zephir
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Retro vs Volley
Retro vs VolleyRetro vs Volley
Retro vs Volley
 
"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)"Деплой кода процедур" Мурат Кабилов (Avito)
"Деплой кода процедур" Мурат Кабилов (Avito)
 
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
Hacking PostgreSQL. Локальная память процессов. Контексты памяти.
 

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

PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиZestranec
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиSQALab
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПKirill Chebunin
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервереYandex
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...CocoaHeads
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf Conference
 
Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3 phpclub
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkOleksandr Torosh
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый стартAntonio
 
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Vadim Kruchkov
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияRuslan Shevchenko
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияSQALab
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajaxYandex
 

Similar to PHP 5.4: Что нового? (20)

PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Тестирование программных фильтров безопасности
Тестирование программных фильтров безопасностиТестирование программных фильтров безопасности
Тестирование программных фильтров безопасности
 
Чуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОПЧуть сложнее чем Singleton: аннотации, IOC, АОП
Чуть сложнее чем Singleton: аннотации, IOC, АОП
 
176023
176023176023
176023
 
2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере2013 09 19 кеширование на клиенте и сервере
2013 09 19 кеширование на клиенте и сервере
 
PowerShell
PowerShellPowerShell
PowerShell
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
 
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
Встреча №8. RESTful клиент — это просто. Тонкости использования RestKit, Миха...
 
ZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and DoctrineZFConf 2010: Zend Framework and Doctrine
ZFConf 2010: Zend Framework and Doctrine
 
Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Phalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP FrameworkPhalcon - самый быстрый PHP Framework
Phalcon - самый быстрый PHP Framework
 
Unit test быстрый старт
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
 
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
Пора ли отправлять С на свалку истории? Пишем демонов на PHP с использованием...
 
анализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Использование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестированияИспользование Open Source инструментов для автоматизации тестирования
Использование Open Source инструментов для автоматизации тестирования
 
Mihail davidov js-ajax
Mihail davidov js-ajaxMihail davidov js-ajax
Mihail davidov js-ajax
 

More from phpdevby

Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияphpdevby
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...phpdevby
 
Современная разработка сайтов на CMF Drupal.
Современная разработка сайтов на CMF Drupal.Современная разработка сайтов на CMF Drupal.
Современная разработка сайтов на CMF Drupal.phpdevby
 
Php архитектор - кто он?
Php архитектор - кто он?Php архитектор - кто он?
Php архитектор - кто он?phpdevby
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Gitphpdevby
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git phpdevby
 
Sphinx в реальных проектах: шишки и плюшки
Sphinx в реальных проектах: шишки и плюшкиSphinx в реальных проектах: шишки и плюшки
Sphinx в реальных проектах: шишки и плюшкиphpdevby
 
Как удержать проект от анархии с помощью Git.
Как удержать проект от анархии с помощью Git.Как удержать проект от анархии с помощью Git.
Как удержать проект от анархии с помощью Git.phpdevby
 
Сайт на Zend Framework в составе промышленной системы
Сайт на Zend Framework в составе промышленной системыСайт на Zend Framework в составе промышленной системы
Сайт на Zend Framework в составе промышленной системыphpdevby
 

More from phpdevby (10)

Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложенияИспользование AMQP в основе архитектуры бэкенда для мобильного приложения
Использование AMQP в основе архитектуры бэкенда для мобильного приложения
 
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...MongoDB. Области применения, преимущества и узкие места, тонкости использован...
MongoDB. Области применения, преимущества и узкие места, тонкости использован...
 
Современная разработка сайтов на CMF Drupal.
Современная разработка сайтов на CMF Drupal.Современная разработка сайтов на CMF Drupal.
Современная разработка сайтов на CMF Drupal.
 
Php архитектор - кто он?
Php архитектор - кто он?Php архитектор - кто он?
Php архитектор - кто он?
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью GitКак удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git Как удержать проект от анархии с помощью Git
Как удержать проект от анархии с помощью Git
 
Sphinx в реальных проектах: шишки и плюшки
Sphinx в реальных проектах: шишки и плюшкиSphinx в реальных проектах: шишки и плюшки
Sphinx в реальных проектах: шишки и плюшки
 
Как удержать проект от анархии с помощью Git.
Как удержать проект от анархии с помощью Git.Как удержать проект от анархии с помощью Git.
Как удержать проект от анархии с помощью Git.
 
Сайт на Zend Framework в составе промышленной системы
Сайт на Zend Framework в составе промышленной системыСайт на Zend Framework в составе промышленной системы
Сайт на Zend Framework в составе промышленной системы
 

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

  • 2. PHP 5.4 Что нового? Высоцкий Артем @avysotsky
  • 3. Содержание  Введение  Производительность  Новинки  Traits или типажи  Замыкания  Встроенный HTTP сервер  Массивы: синтаксис и разыменование  Upload progress  Объектно ориентированные обработчики сессии  Косвенный вызов метода переменной массива  Deprecations  Заключение
  • 4. Введение  На 21.01.2012 – выпущен RC5  Много плюшек  Не готов к продакшену  ETA - Q1 2012 (завтра?) Он не дождался PHP5.4
  • 5. Производительность http://www.slideshare.net/paulgao/come-on-php-54 http://www.internetnews.com/skerner/2010/11/php-54-set-to-boost-performanc.html http://blog.slo-host.com/2011/09/performance-improvements-in-php-5-4-0/
  • 6. Новинки. Трейты. Почувствуй силу trait ezcReflectionReturnInfo { function getReturnType() { /*1*/ } function getReturnDescription() { /*2*/ } } class ezcReflectionMethod extends ReflectionMethod { use ezcReflectionReturnInfo; /* ... */ } class ezcReflectionFunction extends ReflectionFunction { use ezcReflectionReturnInfo; /* ... */ }
  • 7. Новинки. Трейты в деталях  Несколько трейтов  Разрешение конфликтов (insteadof, as)  Изменение видимости метода (as)  Трейты из трейтов  Абстрактные методы  Статические методы  Свойства  __CLASS__
  • 8. Новинки. Встроеный веб сервер или Апачи отдыхает  $ 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
  • 9. Новинки. Массивы: новый синтаксис и разыменование. Наконец-то. //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
  • 10. Новинка. Прогресс загрузки <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 ) );
  • 11. Новинка. Объектно ориентированный обработчик сессии. Мелочь, а приятно. 5.3 5.4
  • 12. Новинка. Косвенный вызов метода переменной массива. class Hello { public function world($x) { echo "Hello, $xn"; return $this; } } $f = array('Hello','world'); var_dump($f('you')); // Hello, you
  • 13. 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().
  • 14. И это все? Нет! Что же я забыл? • Перемещение встроенного расширения 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(); • Разнообразные улучшения отмечаются почти во всех стандартных расширениях;
  • 15. Заключение  Быстро, круто, но не готово для продакшена   А что больше всего понравилось Вам?  Traits или типажи  Замыкания  Встроенный HTTP сервер  Массивы: синтаксис и разыменование  Upload progress  Объектно ориентированные обработчики сессии  Косвенный вызов метода переменной массива