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