PHP 5.2.0 RC3

tony2001

TeaM PHPClub
PHP 5.2.0 RC3

Вышел последний release candidate перед 5.2.0.
Убедительная просьба всем поставить, погонять на своих скриптах и сообщить о найденных проблемах.

http://downloads.php.net/ilia/php-5.2.0RC3.tar.bz2
(79a9e8ecd8edcfcc033bbd49967ad47a)
http://downloads.php.net/ilia/php-5.2.0RC3.tar.gz
(735c8f0385483afc732c09c5bb4257a3)

http://downloads.php.net/edink/php-5.2.0RC3-Win32.zip
f6e910b581f1aab28a209541a89a765c

http://downloads.php.net/edink/pecl-5.2.0RC3-Win32.zip
c1a228a5d9a58b580f9af0e47687bda3

http://downloads.php.net/edink/php-debug-pack-5.2.0RC3-Win32.zip
97c8c153378534f47e37b1e830a0e89b

Основные моменты, на которые стоит обратить внимание:

- добавлены и включены по дефолту модули [m]JSON[/m] (http://json.org) и [m]filter[/m].
- новый модуль для работы с zip (не включен под дефолту, используйте --enable-zip).
- увеличен дефолтовый memory_limit до 16MB (by popular demand..).
- переписан Zend memory manager (оптимизация управления памятью).
- множественные улучшения и багфиксы.

А также:

- Changed E_ALL error reporting mode to includes E_RECOVERABLE_ERROR. (Marcus)

This change means that the value of the E_ALL constant had changed to 6143
from its previous value of 2047. If you are setting your error reporting mode
inside the Apache config file or the .htaccess files you will need to adjust
the value of error_reporting INI setting accordingly.

- Added new error mode E_RECOVERABLE_ERROR. (Derick, Marcus, Tony)

This changes a few E_ERROR conditions to something that you can now catch
using a user error handler. If the user error handler does not grab these
kind of error they behave as fatal errors just like in any PHP version prior
to 5.2. Errors of this type are logged as 'Catchable fatal error'.

- Added support for constructors in interfaces to force constructor signature
checks in implementations. (Marcus)

Starting with PHP 5.2 interfaces can have constructors. If you use this
feature then all implementing classes must implement constructors with a
matching signature, while normally constructors do not need to follow any
base class or interface constructor signature. (Signature is the name for
the parameter and return type definition which captures count, reference or
not and any type hints).

- Changed __toString to be called whereever applicable. (Marcus)

The magic object method __toString() is now called whenever an object is used
as a string. The function must not throw an exception or the script will be
terminated. The PHP 5.0/5.1 fallback to return a string containing the object
idetifier has been dropped. Note that the object identifier is never unique.
That measn that if you have used this feature your application has been
flawed. Nonetheless it will now be a catchable fatal error (see above).

Even with __toString objects cannot be used as keys to arrays. We might add
built-in hash support for this. But for 5.2 you would need to either provide
your own hashing or use new function spl_object_hash()

- Added RFC2397 (data: stream) support. (Marcus)

Under windows this can mean a very rare change of behavior. If you are using
NTFS filesystem and making use of meta streams in your application this does
no longer work for a file with the name 'data' accessed without any path. If
you need to do so you have to prefix the filename with the "file:" protocol.
For the functionality itself look here http://www.faqs.org/rfcs/rfc2397.html.

- Added allow_url_include ini directive to complement allow_url_fopen. (Rasmus)

With this option one can now distinguish between standard file operations on
remote files and inclusion of remote files. While the former is usually
desired, the latter implies security risks if used naivly. Starting with
PHP-5.2 it is now possible to allow standard file operations while
dissalowing inclusion of remote files, which will also be the default
configuration.

- Dropped abstract static class functions. (Marcus)

Due to an oversight PHP 5.0, 5.1 allowed abstract static functions. In PHP
5.2 only interfaces can have abstract static functions.
 

WP

^_^
Всё круто. Но. win32. Ставлю extension=php_sqlite.dll, при запуске ругается что php_pdo.dll не найден, хотя файл на месте, естественно.
 

WP

^_^
А также xdebug странно себя ведет. На предыдущей версии все было ок. А сейчас поставил, скачал snapshot для 5.2.0, во-первых стало плодить кучу дампов для одного и того же скрипта, а не перезаписывать, во-вторых перестало показывать время, то бишь прочерки вместо любых замеров. Понимаю, что это немного оффтопик, но тем не менее.

-~{}~ 01.09.06 22:33:

p.s. PHP 5.2.0 RC2 прекрасно работало с xdebug 5.1.4+, а после обновления - полная тишина. Ну а если обновить xdebug до 5.2.0, то вышеописаное.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Классная версия.
Несовместимости в существующем коде не вижу (не приходило мне в голову писать статические абстрактные методы).
Использовал __toString в конкатенации - возвращаться на 5.1 уже не хочу, все новое - под него.
Фильтр - замечательная весч, пол-кода проверок данных уйдет. Жаль, что нет проверки на длинну данных.
 

Igor aka TiGR

Новичок
Какие фильтры? Я ещё себе не поставил, просто интересно - что за фильтры.
 

FreeSpace

Чукча-читатель
Да, фильтры - это действительно полезная и частоиспользуемая штука, странно что её до сих пор не добавили :)
Это действительно должно простимулировать хорошую практику валидации данных среди новичков.
 

tony2001

TeaM PHPClub
>Извините... Где?

Основные моменты, на которые стоит обратить внимание:

- добавлены и включены по дефолту модули JSON (http://json.org) и filter.
>Фильтр - замечательная весч, пол-кода проверок данных уйдет.
>Жаль, что нет проверки на длинну данных.
есть FILTER_VALIDATE_REGEXP
 

Solid

Drosera anglica
Фильтры, JSON и __toString - это конечно круто... но до этого ещё надо будет дожить... Не все хотят устанавливать новые релизы. :(
 

crocodile2u

http://vbolshov.org.ru
Поставил на дев. машине, пока полностью доволен, багов не наблюдаю. Впрочем, до новой функциональности пока руки не дошли.
 

WP

^_^
Я бы поюзал json_encode, но он вот незадача, не дружит он с русским. То бишь обрезает строку до первого "плохого" символа.
PHP:
echo json_encode('PHP - круто');
// "PHP - "
 

Yaponchick

Новичок
WP
там в комментах было написано, чтобы юзали utd8_encode или чего-то там с утф8 =)
 

WP

^_^
У, это чо надо обойти рекурсивно все строки объекта и запихать в utf8? Шустрее свою функцию юзать :) Без сякого утф.
 
Сверху