Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Конференция 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

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  Объектно ориентированные обработчики сессии  Косвенный вызов метода переменной массива