Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



PHP 5.3: обзор

Раздел: Programming / PHP @ 19.05.2009 | Ключевые слова: php 5.3 версия для печати

Автор: TravisBickle
Источник: habrahabr

Дни идут чередой, погода улучшается, а между тем PHP 5.3 всё ближе и ближе — надо быть во всеоружии.
Недавно вышел RC2, затем будет RC3, а затем Stable (примерно через месяц).

Первое, о чем хочется сказать: 5.2 медленнее 5.1, но 5.3 быстрее 5.1. В 5.3 введено много оптимизаций (в том числе таблиц связей), и это не может не радовать.

Особенных проблем обратной совместимости нет, за исключением введения новых зарезервированных слов и других малозначительных моментов.
Подробно они описаны тут — wiki.php.net/doc/scratchpad/upgrade/53

Помимо этого есть много новшеств:

1. mysqlnd.
Как известно, PHP общается с MySQL-сервером посредством C-wrapper`а над libmysql, однако реализация имеет огромный оверхед (к пример, когда Вы делаете mysql_fetch_assoc, результат имеет аж три копии в памяти).
MySQL Native Driver представляет собой эффективную замену libmysql на C-уровне. Однако, интерфейсы (mysql, mysqli, PDO) не должны никак от этого пострадать.

2. Closures.
Вам надоело видеть create_function() под ободком вашего унитаза?
$lambda = function() {echo `Hello World!`;};
$lambda();


* This source code was highlighted with Source Code Highlighter.

Также Вы можете сделать:
class myLambda
{
  public function __invoke() {echo `Hello World!`;}
}
$lambda = new myLambda;
$lambda();


* This source code was highlighted with Source Code Highlighter.
Более, того, можно задействовать переменные из области видимости контекста внутрь функции:
$var = `Hello World!`;
$func = function() use ($var) {echo $var;};
$func();


* This source code was highlighted with Source Code Highlighter.
Так очень удобно делать при использовании preg_replace_callback, и при задании событий.

Мануал по адресу wiki.php.net/rfc/closures

3. namespaces. Пространства имён.
namespace hello;
class msg
{
 public static function write() {echo `Hello`;}
}
msg::write();
namespace World;
class msg
{
 public static function write() {echo ` World!`;}
}
msg::write();


* This source code was highlighted with Source Code Highlighter.
Пример специально приведен несуразный. namespace`ы удобно использовать для логического объединения классов, для того чтобы константы не пересекались, и во многих других случаях. Рекомендую к использованию.
Разделитель namespace`ов в пути — обратный слеш (\).

Мануал по адресу php.net/namespaces

4. Тернарный оператор.
Можно использовать без указания true-альтернативы, тогда ей становится само значение.
$var = `Hello World!`;
echo $var?:`false`;
// Hello World!


* This source code was highlighted with Source Code Highlighter.
Однако, в этом я вижу очень мало практического применения.

5. Label`ы. Аналог GOTO.
Label`ы это именованные позиции в коде к которым можно осуществить переход, разумеется между уровнями переходить нельзя, и для каждого своя область видимости Label`ов.
$i = 1;
start:
echo ($i > 1?`-`:``).$i;
if ($i++ < 5) {goto start;}
echo ` вышел зайчик погулять`;
// 1-2-3-4-5 вышел зайчик погулять


* This source code was highlighted with Source Code Highlighter.
Полезная вещь при создании нетривиальных алгоритмов.
Эх, чешутся пальцы написать обфускатор кода :)

6. Garbage Collector.
Наконец-то в PHP появился нормальный сборщик мусора, то есть можно будет писать долгоиграющие скрипты без утечек памяти.

7. SPL.
Значительно доработан SPL, введены новые структуры данных. Например, SplFixedArray. Новые структуры данных при определенных условиях дают прирост производительности.
Спасибо Sherman81 за наводку.

Помимо этого обновили PCRE до 7.9 (заявлено исправление многих багов), sqlite улучшили, и еще много чего вкусного.

Наверняка я не учел что-то важное, прошу вежливо ткнуть меня в это носом, допишу.
Предлагаю всем принять участие в тестировании!







версия для печатиРаспечатать статью


Вернуться в раздел: Programming / PHP


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.