Upload
phpdevby
View
1.649
Download
0
Embed Size (px)
Citation preview
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-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/
Новинки. Трейты. Почувствуй силу
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, $x\n"; 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_seoulTwitter: @avysotskyEmail: [email protected]