ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

PHP 5.3: обзор
  #1  
Старый 12.06.2009, 09:58
Аватар для Trieg
Trieg
Познающий
Регистрация: 26.10.2007
Сообщений: 83
Провел на форуме:
394231

Репутация: 50
По умолчанию PHP 5.3: обзор

Дни идут чередой, погода улучшается, а между тем 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() под ободком вашего унитаза?
PHP код:
$lambda = function() {echo 'Hello World!';};
$lambda(); 
Также Вы можете сделать:
PHP код:
class myLambda
{
  public function 
__invoke() {echo 'Hello World!';}
}
$lambda = new myLambda;
$lambda(); 
Более, того, можно задействовать переменные из области видимости контекста внутрь функции:
PHP код:
$var 'Hello World!';
$func = function() use ($var) {echo $var;};
$func(); 
Так очень удобно делать при использовании preg_replace_callback, и при задании событий.

Использовать $this в коде замыкания недопустимо. Это планировалось изначально, но у разработчиков возникли технические проблемы.
Однако, можно передать ссылку на объект, используя use, это позволит получит доступ к публичным интерфейсам.

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


3. namespaces. Пространства имён.
PHP код:
namespace hello;
class 
msg
{
 public static function 
write() {echo 'Hello';}
}
msg::write();
namespace 
World;
class 
msg
{
 public static function 
write() {echo ' World!';}
}
msg::write(); 
Пример специально приведен несуразный. namespace'ы удобно использовать для логического объединения классов, для того чтобы константы не пересекались, и во многих других случаях. Рекомендую к использованию.
Разделитель namespace'ов в пути — обратный слеш (\).

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


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


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


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


7. SPL.
Во-первых: http://www.php.net/~helly/php/ext/spl/

И кроме того, о значимых нововведениях: SplFixedArray, SplStack, SplDoublyLinkedList, SplQueue, SplPriorityQueue. Некоторые новые структуры данных при определенных условиях дают прирост производительности.

Посмотреть информацию о классах, интерфейсах и функциях Spl можно в phpinfo() или из командной строки:
$ php -i|less
$ php -r 'var_export(spl_classes());'
$ php --re spl|less


8. Late Static Binding
Появился магический метод __callStatic и функция get_called_class().
Это очень полезное нововведение.

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

Автор:TravisBickle
Оригинал статьи: http://habrahabr.ru/blogs/php/59876/
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Books PSalm69 Избранное 248 27.10.2009 04:52
На PHP, как на "Новые ворота"... Mertvii-Listopad Чужие Статьи 7 18.09.2006 12:42
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ