[prev in list] [next in list] [prev in thread] [next in thread]
List: phpdoc
Subject: [PHP-DOC] cvs: phpdoc / manual.xml.in /en/appendices migration52.xml
From: "Philip Olson" <philip () php ! net>
Date: 2007-02-28 6:09:22
Message-ID: cvsphilip1172642962 () cvsserver
[Download RAW message or body]
This is a MIME encoded message
philip Wed Feb 28 06:09:22 2007 UTC
Added files:
/phpdoc/en/appendices migration52.xml
Modified files:
/phpdoc manual.xml.in
Log:
Added Migration info for PHP 5.1.x to PHP 5.2.x. This closes bug #40519
and was created by Daniel Convissor with only minor modifications by me.
This file is based off of http://php.net/UPDATE_5_2.txt
["philip-20070228060922.txt" (text/plain)]
http://cvs.php.net/viewvc.cgi/phpdoc/manual.xml.in?r1=1.216&r2=1.217&diff_format=u
Index: phpdoc/manual.xml.in
diff -u phpdoc/manual.xml.in:1.216 phpdoc/manual.xml.in:1.217
--- phpdoc/manual.xml.in:1.216 Sat Feb 24 22:59:43 2007
+++ phpdoc/manual.xml.in Wed Feb 28 06:09:22 2007
@@ -2,7 +2,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"@srcdir@/docbook/docbook-xml/docbookx.dtd" [
-<!-- $Revision: 1.216 $ -->
+<!-- $Revision: 1.217 $ -->
<!-- Add translated specific definitions and snippets -->
<!ENTITY % language-defs SYSTEM "@srcdir@/@LANGDIR@/language-defs.ent">
@@ -156,6 +156,7 @@
<part id="appendices">
<title>&Appendices;</title>
&appendices.history;
+ &appendices.migration52;
&appendices.migration5;
&appendices.migration4;
&appendices.migration;
http://cvs.php.net/viewvc.cgi/phpdoc/en/appendices/migration52.xml?view=markup&rev=1.1
Index: phpdoc/en/appendices/migration52.xml
+++ phpdoc/en/appendices/migration52.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<appendix id="migration52">
<title>Migrating from PHP 5.1.x to PHP 5.2.x</title>
<section id="migration52.changes">
<title>What has changed in PHP 5.2.x</title>
<para>
Most improvements in PHP 5.2.x have no impact on existing code. There are
a <link linkend="migration52.incompatible">few incompatibilities</link>
and <link linkend="migration52.error-messages">new error messages</link>
that should be considered, and code should be tested before switching PHP
versions in production environments.
</para>
<para>
If the system is being upgraded from PHP 5.0.x, the text titled
<ulink url="&url.php.upgrade51;">Upgrade Notes for PHP 5.1.x</ulink>
should also be read.
</para>
<para>
Similarly, if the system is being upgraded from PHP 4, the manual section
titled <link linkend="migration5">Migrating from PHP 4 to PHP 5</link>
should be read as well.
</para>
</section>
<section id="migration52.incompatible">
<title>Backward Incompatible Changes</title>
<para>
Although most existing PHP 5 code should work without changes, you should
pay attention to the following backward incompatible changes:
</para>
<itemizedlist>
<listitem>
<simpara>
<function>getrusage</function> returns &null; when passed
incompatible arguments as of PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.ziparchive-setCommentName"><function>ZipArchive::setCommentName</function></link>
returns &true; on success as of PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.ziparchive-setcommentindex"><function>ZipArchive::setCommentIndex</function></link>
returns &true; on success as of PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
<function>SplFileObject::getFilename</function> returns
the filename, not relative/path/to/file, as of PHP 5.2.1.
</simpara>
</listitem>
<listitem>
<simpara>
Changed priority of <constant>PHPRC</constant> environment variable on Win32
</simpara>
<simpara>
The PHPRC environment variable now takes priority over the path stored
in the Windows registry.
</simpara>
</listitem>
<listitem>
<simpara>
CLI SAPI no longer checks cwd for &php.ini; or the \
<filename>php-cli.ini</filename> file </simpara>
<simpara>
In PHP 5.1.x an undocumented feature was added that made the CLI binary check
the current working directory for a PHP configuration file, potentially
leading to unpredictable behavior if an unexpected configuration file were
read. This functionality was removed in 5.2.0, and PHP will no longer search
CWD for the presence of &php.ini; or <filename>php-cli.ini</filename> files.
See also the <link linkend="features.commandline">command line</link> section
of the manual.
</simpara>
</listitem>
<listitem>
<simpara>
Added a warning when performing modulus 0 operations
</simpara>
<simpara>
In earlier versions of PHP, performing integer % 0 did not emit any
warning messages, instead returning an unexpected return value of &false;.
As of PHP 5.2.0, this operation will emit an <constant>E_WARNING</constant>,
as is the case in all other instances where division by zero is performed.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
print 10 % 0;
/* Warning: Division by zero in filename on line n */
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Changed <function>__toString</function> to be called wherever
applicable.
</simpara>
<simpara>
The magic method <function>__toString</function> will now be called
in a string context, that is, anywhere an object is used as a
string.
</simpara>
<simpara>
The fallback of returning a string that contains the
object identifier was dropped in PHP 5.2.0. It became
problematic because an object identifier cannot be considered
unique. This change will mean that your application is flawed if you
have relied on the object identifier as a return value. An attempt
to use that value as a string will now result in a catchable fatal
error.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class foo {}
$foo = new foo;
print $foo;
/* Catchable fatal error: Object of class foo could
not be converted to string in filename on line n */
?>
]]>
</programlisting>
</informalexample>
<simpara>
Even with <function>__toString</function>, objects cannot be used as
array indices or keys. We may add built-in hash support for this at
a later date, but as of PHP 5.2.x you will need to either provide your
own hashing or use the new SPL function
<function>spl_object_hash</function>.
</simpara>
<simpara>
Exceptions can not be thrown from from
<function>__toString</function> methods.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class foo {
public function __toString() {
throw new Exception;
}
}
try {
print new foo;
/* Fatal error: Method foo::__toString() must
not throw an exception in filename on line n */
} catch(Exception $e) {}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Dropped abstract static class functions.
</simpara>
<simpara>
Due to an oversight, PHP 5.0.x and 5.1.x allowed abstract static
functions in classes. As of PHP 5.2.x, only interfaces can have them.
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
abstract class foo {
abstract static function bar();
/* Strict Standards: Static function foo::bar()
should not be abstract in filename on line n */
}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Added RFC2397 (<literal>data:</literal> stream) support.
</simpara>
<simpara>
The introduction of the 'data' URL scheme has the potential to lead to a
change of behavior under Windows. If you are working with a \
<acronym>NTFS</acronym>
file system and making use of meta streams in your application, and if you
just happen to be using a file with the name 'data:' that is accessed without
any path information - it won't work any more. The fix is to use the 'file:'
protocol when accessing it.
</simpara>
<simpara>
See also <ulink url="&url.rfc;2397">RFC 2397</ulink>
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
/* when allow_url_include is OFF (default) */
include "data:;base64,PD9waHAgcGhwaW5mbygpOz8+";
/* Warning: include(): URL file-access is disabled
in the server configuration in filename on line n */
?>
]]>
</programlisting>
</informalexample>
</listitem>
</itemizedlist>
</section>
<section id="migration52.error-messages">
<title>New Error Messages</title>
<para>
Below are the new error messages that have not been discussed
elsewhere in this document.
</para>
<para>
<example>
<title>In PHP Core</title>
<programlisting role="php">
<![CDATA[
<?php
echo " ";
session_regenerate_id();
/* Warning: session_regenerate_id(): Cannot regenerate
session id - headers already sent in filename on line n */
str_word_count("string", 4);
/* Warning: str_word_count(): Invalid format value 4
in filename on line n */
strripos("foo", "f", 4);
/* Notice: strripos(): Offset is greater than the
length of haystack string in filename on line n */
strrpos("foo", "f", 4);
/* Notice: strrpos(): Offset is greater than the
length of haystack string in filename on line n */
/* As of PHP 5.2.1, when allow_url_include is OFF (default) */
include "php://input";
/* Warning: include(): URL file-access is disabled
in the server configuration in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title><link linkend="language.oop5">Object Oriented Code</link> in PHP \
Core</title> <programlisting role="php">
<![CDATA[
<?php
interface foo {
}
class bar implements foo, foo {
}
/* Fatal error: Class bar cannot implement previously
implemented interface foo in filename on line n */
class foo {
public $bar;
function __get($var)
{
return $this->bar;
}
}
$foo = new foo;
$bar =& $foo->prop;
/* Notice: Indirect modification of overloaded property
foo::$prop has no effect in filename on line n */
class foo implements iterator {
public function current() {
}
public function next() {
}
public function key() {
}
public function valid() {
}
public function rewind() {
}
}
$foo = new foo();
foreach($foo as &$ref) {}
/* Fatal error: An iterator cannot be used with foreach
by reference in filename on line n */
class foo {
private function __construct() {
}
}
class bar extends foo {
public function __construct() {
parent::__construct();
/* Fatal error: Cannot call private
foo::__construct() in filename on line n */
}
}
new bar;
stream_filter_register("", "class");
/* Warning: stream_filter_register(): Filter name
cannot be empty in filename on line n */
stream_filter_register("filter", "");
/* Warning: stream_filter_register(): Class name
cannot be empty in filename on line n */
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.bzip2">bzip2</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
bzopen("", "w");
/* Warning: bzopen(): filename cannot be empty
in filename on line n */
bzopen("foo", "a");
/* Warning: bzopen(): 'a' is not a valid mode for
bzopen(). Only 'w' and 'r' are supported in
filename on line n */
$fp = fopen("foo", "w");
bzopen($fp, "r");
/* Warning: bzopen(): cannot read from a stream
opened in write only mode in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.datetime">datetime</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
strtotime("today", "now");
/* Warning: strtotime() expects parameter 2 to be
long, string given in filename on line n */
/* As of PHP 5.2.1 */
new DateTime(new stdclass);
/* Fatal error: Uncaught exception 'Exception' with
message 'DateTime::__construct() expects parameter
1 to be string, object given' in filename:n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.dbase">dBase</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
dbase_open("foo", -1);
/* Warning: Invalid access mode -1 in filename on line n */
/* As of PHP 5.2.1 */
dbase_open("foo", null);
/* Warning: The filename cannot be empty in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.mcrypt">mcrypt</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
$key = "this is a secret key";
$td = mcrypt_module_open('tripledes', '', 'ecb', '');
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td),
MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$encrypted_data = mcrypt_generic($td, "");
/* Warning: mcrypt_generic(): An empty string was
passed in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.oci8">oci8</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
oci_connect("user", "pass", "db", "bogus_charset");
/* Warning: Invalid character set name:
bogus_charset in filename on line n */
$oci = oci_connect("user", "pass", "db");
oci_password_change($oci, "", "old", "new");
/* Warning: username cannot be empty in filename
on line n */
oci_password_change($oci, "user", "", "new");
/* Warning: old password cannot be empty in filename
on line n */
oci_password_change($oci, "user", "old", "");
/* Warning: new password cannot be empty in filename
on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.spl">SPL</link> Extension</title>
<programlisting role="php">
<![CDATA[
<?php
$obj = new SplFileObject(__FILE__);
$obj->fgetcsv("foo");
/* Warning: SplFileObject::fgetcsv(): delimiter must
be a character in filename on line n */
$obj->fgetcsv(",", "foo");
/* Warning: SplFileObject::fgetcsv(): enclosure must
be a character in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>In the <link linkend="ref.sem">Semaphore</link> (sysvmsg) \
extension</title> <programlisting role="php">
<![CDATA[
<?php
/* Warning: maximum size of the message has to be
greater then zero in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>A 5.2.1+ <link linkend="ref.zip">Zip</link> Example</title>
<programlisting role="php">
<![CDATA[
<?php
$obj = new ZipArchive();
$obj->open('archive.zip');
$obj->setCommentName('', 'comment');
/* Notice: ZipArchive::setCommentName(): Empty string
as entry name in filename on line n */
/* As of PHP 5.2.1 */
$obj->getCommentName('');
/* Notice: ZipArchive::getCommentName(): Empty string
as entry name in filename on line n */
?>
]]>
</programlisting>
</example>
</para>
</section>
<section id="migration52.datetime">
<title>Changes in PHP <link linkend="ref.datetime">datetime</link>
support</title>
<para>
Since PHP 5.1.0, there has been an extension named <literal>date</literal>
in the PHP core. This is the new implementation of PHP's datetime support.
Although it will attempt to guess your system's timezone setting, you
should set the timezone manually. You can do this in any of three ways:
</para>
<itemizedlist>
<listitem>
<simpara>
in your &php.ini; using the
<link linkend="ini.date.timezone">date.timezone</link> INI directive
</simpara>
</listitem>
<listitem>
<simpara>
on your system using the <constant>TZ</constant> environmental variable
</simpara>
</listitem>
<listitem>
<simpara>
from your script using the convenience function
<link linkend="function.date-default-timezone-get"><function>date_default_timezone_set</function></link>
</simpara>
</listitem>
</itemizedlist>
<para>
All supported <link linkend="timezones">timezones</link> are listed
in the PHP Manual.
</para>
<para>
With the advent of PHP 5.2.x, there are <type>object</type> representations of the
date and timezone, named DateTime and DateTimeZone respectively.
The methods map to existing procedural date functions.
</para>
</section>
<section id="migration52.parameters">
<title>New Parameters</title>
<para>
Some functions were given new parameters in PHP 5.2.x:
</para>
<para>PHP Core:</para>
<itemizedlist>
<listitem>
<simpara>
<function>base64_decode</function>
- added <parameter>strict</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>setcookie</function>
- added <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>setrawcookie</function>
- added <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_set_cookie_params</function>
- added <parameter>httponly</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>memory_get_usage</function>
- added <parameter>real_usage</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.curl">curl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>curl_multi_info_read</function>
- added <parameter>msgs_in_queue</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.imap">imap</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>imap_open</function>
- added <parameter>n_retries</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_reopen</function>
- added <parameter>n_retries</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.mbstring">mbstring</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>mb_strrpos</function>
- added <parameter>offset</parameter>
</simpara>
<warning>
<simpara>
The <parameter>offset</parameter> parameter was put in the position
the <parameter>encoding</parameter> parameter used to be.
Backward compatibility has been
provided by allowing <parameter>encoding</parameter> to be specified
as the third parameter. Using this backward compatibility mode is
not recommended because it will be removed in a future release of PHP.
</simpara>
</warning>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="function.swfmovie.streammp3"><function>swfmovie::streamMP3</function></link>
- added <parameter>skip</parameter> in PHP 5.2.1
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_verify</function>
- added <parameter>signature_algo</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pgsql">pgsql</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>pg_escape_bytea</function>
- added <parameter>connection</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>pg_escape_string</function>
- added <parameter>connection</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.simplexml">simplexml</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="function.simplexml-element-construct"><function>SimpleXMLElement::__construct</function></link>
- added <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.simplexml-element-attributes"><function>SimpleXMLElement::attributes</function></link>
- added <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.simplexml-element-children"><function>SimpleXMLElement::children</function></link>
- added <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>simplexml_load_file</function>
- added <parameter>is_prefix</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<function>simplexml_load_string</function>
- added <parameter>is_prefix</parameter>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
array iterator_to_array(Traversable it [, bool use_keys = true])
- added <parameter>use_keys</parameter> in PHP 5.2.1
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.xmlreader">xmlreader</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="function.xmlreader-open"><function>XMLReader::open</function></link>
- added <parameter>encoding</parameter>
and <parameter>options</parameter>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.xmlreader-xml"><function>XMLReader::XML</function></link>
- added <parameter>encoding</parameter>
and <parameter>options</parameter>
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.functions">
<title>New Functions</title>
<para>
PHP 5.2.x introduced some new functions:
</para>
<para>PHP Core:</para>
<itemizedlist>
<listitem>
<simpara>
<function>array_fill_keys</function>
- Create an array using the elements of the first parameter as keys,
each initialized to val
</simpara>
</listitem>
<listitem>
<simpara>
<function>error_get_last</function>
- Get the last occurred error as associative array. Returns &null;
if there hasn't been an error yet
</simpara>
</listitem>
<listitem>
<simpara>
<function>image_type_to_extension</function>
- Get file extension for image-type returned by getimagesize,
exif_read_data, exif_thumbnail, exif_imagetype
</simpara>
</listitem>
<listitem>
<simpara>
<function>memory_get_peak_usage</function>
- Returns the peak allocated by PHP memory
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_abbreviations_list</function>
- Returns associative array containing DST, offset and the timezone name
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_identifiers_list</function>
- Returns numerically indexed array with all timezone identifiers
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_name_from_abbr</function>
- Returns the timezone name from abbreviation
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_socket_shutdown</function>
- Causes all or part of a full-duplex connection on the socket
associated with stream to be shut down. As of PHP 5.2.1.
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.mbstring">mbstring</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>mb_list_encodings_alias_names</function>
- Returns an array of all supported entity encodings
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_list_mime_names</function>
- Returns an array or string of all supported mime names
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_stripos</function>
- Finds position of first occurrence of a string within another,
case insensitive
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_stristr</function>
- Finds first occurrence of a string within another, case insensitive
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strrchr</function>
- Finds the last occurrence of a character in a string within another
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strrichr</function>
- Finds the last occurrence of a character in a string within another,
case insensitive
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strripos</function>
- Finds position of last occurrence of a string within another,
case insensitive
</simpara>
</listitem>
<listitem>
<simpara>
<function>mb_strstr</function>
- Finds first occurrence of a string within another
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link> (As of PHP 5.2.1):</para>
<itemizedlist>
<listitem>
<simpara>
void ming_setSWFCompression(int num)
- Sets output compression
</simpara>
</listitem>
<listitem>
<simpara>
void swfmovie::namedanchor(string name)
- Creates anchor
</simpara>
</listitem>
<listitem>
<simpara>
void swfmovie::protect([string pasword])
- Protects
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_csr_get_public_key</function>
- Extracts public key from a CERT and prepares it for use
</simpara>
</listitem>
<listitem>
<simpara>
<function>openssl_csr_get_subject</function>
- Returns the subject of a CERT
</simpara>
</listitem>
<listitem>
<simpara>
<function>openssl_pkey_get_details</function>
- Returns an array with the key details (bits, pkey, type)
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>spl_object_hash</function>
- Return hash id for given object
</simpara>
</listitem>
<listitem>
<simpara>
int iterator_apply(Traversable it, mixed function [, mixed params])
- Calls a function for every element in an iterator
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pcre">pcre</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>preg_last_error</function>
- Returns the error code of the last regex execution
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.pgsql">pgsql</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>pg_field_table</function>
- Returns the name of the table field belongs to, or table's oid
if oid_only is true
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.posix">posix</link>:</para>
<itemizedlist>
<listitem>
<simpara>
bool posix_initgroups(string name, int base_group_id)
- Calculate the group access list for the user specified in name
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.gmp">gmp</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>gmp_nextprime</function>
- Finds next prime of a
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.xmlwriter">xmlwriter</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<function>xmlwriter_full_end_element</function>
- End current element - returns FALSE on error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_write_raw</function>
- Write text - returns FALSE on error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_start_dtd_entity</function>
- Create start DTD Entity - returns FALSE on error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_end_dtd_entity</function>
- End current DTD Entity - returns FALSE on error
</simpara>
</listitem>
<listitem>
<simpara>
<function>xmlwriter_write_dtd_entity</function>
- Write full DTD Entity tag - returns FALSE on error
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.methods">
<title>New Methods</title>
<para>
New methods were introduced in 5.2.0:
</para>
<para><link linkend="ref.dom">dom</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="function.dom-domdocument-registernodeclass"><function>DOMDocument::registerNodeClass</function></link>
- Register extended class used to create base node type
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.dom-domelement-setidattribute"><function>DOMElement::setIDAttribute</function></link>
- Declares the attribute specified by name to be of type ID
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.dom-domelement-setidattributenode"><function>DOMElement::setIDAttributeNode</function></link>
- Declares the attribute specified by node to be of type ID
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="function.dom-domelement-setidattributens"><function>DOMElement::setIDAttributeNS</function></link>
- Declares the attribute specified by local name and namespace URI to be
of type ID
</simpara>
</listitem>
<listitem>
<simpara>
DOMNode::C14N([bool exclusive [, bool with_comments [, array xpath [, array \
ns_prefixes]]]])
- Canonicalize nodes to a string
</simpara>
</listitem>
<listitem>
<simpara>
DOMNode::C14NFile(string uri [, bool exclusive [, bool with_comments [, array \
xpath [, array ns_prefixes]]]])
- Canonicalize nodes to a file
</simpara>
</listitem>
<listitem>
<simpara>
DOMNode::getNodePath()
- Gets an xpath for a node
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.soap">soap</link>:</para>
<itemizedlist>
<listitem>
<simpara>
SoapServer::setObject(object obj)
- Sets object which will handle SOAP requests
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
int ArrayObject::asort(void)
- Sort the entries by values
</simpara>
</listitem>
<listitem>
<simpara>
int ArrayObject::ksort(void)
- Sort the entries by key
</simpara>
</listitem>
<listitem>
<simpara>
int ArrayObject::natcasesort(void)
- Sort the entries by key using case insensitive
"natural order" algorithm.
</simpara>
</listitem>
<listitem>
<simpara>
int ArrayObject::natsort(void)
- Sort the entries by values using "natural order" algorithm.
</simpara>
</listitem>
<listitem>
<simpara>
int ArrayObject::uasort(callback cmp_function)
- Sort the entries by values user defined function
</simpara>
</listitem>
<listitem>
<simpara>
int ArrayObject::uksort(callback cmp_function)
- Sort the entries by key using user defined function.
</simpara>
</listitem>
<listitem>
<simpara>
ArrayIterator AppendIterator::getArrayIterator()
- Get access to inner ArrayIterator
</simpara>
</listitem>
<listitem>
<simpara>
int AppendIterator::getIteratorIndex()
- Get index of iterator
</simpara>
</listitem>
<listitem>
<simpara>
bool CachingIterator::getCache()
- Return the cache
</simpara>
</listitem>
<listitem>
<simpara>
int CachingIterator::getFlags()
- Return the internal flags
</simpara>
</listitem>
<listitem>
<simpara>
bool CachingIterator::offsetExists(mixed index)
- Return whether the requested index exists
</simpara>
</listitem>
<listitem>
<simpara>
string CachingIterator::offsetGet(mixed index)
- Return the internal cache if used
</simpara>
</listitem>
<listitem>
<simpara>
void CachingIterator::offsetSet(mixed index, mixed newval)
- Set given index in cache
</simpara>
</listitem>
<listitem>
<simpara>
void CachingIterator::offsetUnset(mixed index)
- Unset given index in cache
</simpara>
</listitem>
<listitem>
<simpara>
void CachingIterator::setFlags()
- Set the internal flags
</simpara>
</listitem>
<listitem>
<simpara>
array("delimiter" =>, "enclosure" =>) SplFileObject::getCsvControl(void)
- Get the delimiter and enclosure character used in fgetcsv
</simpara>
</listitem>
<listitem>
<simpara>
void SplFileObject::setCsvControl([string delimiter = ',' [, string enclosure = \
'"']])
- Set the delimiter and enclosure character used in fgetcsv
</simpara>
</listitem>
<listitem>
<simpara>
boolean XMLReader::setSchema(string filename)
- Use W3C XSD schema to validate the document as it is processed. Activation is \
only possible before the first Read() </simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.zip">zip</link>:</para>
<itemizedlist>
<listitem>
<simpara>
bool ZipArchive::addEmptyDir(string dirname)
- Creates an empty directory in the archive
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.removed-extensions">
<title>Removed Extensions</title>
<para>
These extensions have been moved to PECL and are no longer
part of the PHP distribution. The PECL package version of
these extensions will be created according to user demand.
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.filepro">filePro</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.hwapi">Hyperwave API</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.new-extensions">
<title>New Extensions</title>
<para>
The following are new extensions added (by default) as of PHP 5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.filter">Filter</link>
- validates and filters data, and is designed for use with insecure
data such as user input. This extension is enabled by default; the
default mode RAW does not impact input data in any way.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.json">JSON</link>
- implements the JavaScript Object Notation (JSON)
data interchange format. This extension is enabled by default.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.zip">Zip</link>
- enables you to transparently read or write ZIP
compressed archives and the files inside them.
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.classes">
<title>New Classes</title>
<para>
The following classes were introduced in PHP 5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ref.datetime">DateTime</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ref.datetime">DateTimeZone</link>
</simpara>
</listitem>
<listitem>
<simpara>
RegexIterator - extends FilterIterator; implements Iterator,
Traversable, OuterIterator
</simpara>
<simpara>
Constants:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>RegexIterator::ALL_MATCHES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::GET_MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::REPLACE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::SPLIT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RegexIterator::USE_KEY</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Properties:
</simpara>
<itemizedlist>
<listitem>
<simpara>
public <property>replacement</property>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Methods:
</simpara>
<itemizedlist>
<listitem>
<simpara>
RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags \
[, int preg_flags]]])
- Create an RegexIterator from another iterator and a regular expression
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::accept()
- Match (string)current() against regular expression
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getFlags()
- Returns current operation flags
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getMode()
- Returns current operation mode
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::getPregFlags()
- Returns current PREG flags (if in use or &null;)
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setFlags(int new_flags)
- Set operation flags
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setMode(int new_mode)
- Set new operation mode
</simpara>
</listitem>
<listitem>
<simpara>
bool RegexIterator::setPregFlags(int new_flags)
- Set PREG flags
</simpara>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<simpara>
RecursiveRegexIterator
</simpara>
<simpara>
Constants:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::ALL_MATCHES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::GET_MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::MATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::REPLACE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::SPLIT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>RecursiveRegexIterator::USE_KEY</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Methods:
</simpara>
<itemizedlist>
<listitem>
<simpara>
RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int \
mode [, int flags [, int preg_flags]]])
- Create an RecursiveRegexIterator from another recursive iterator and
a regular expression
</simpara>
</listitem>
<listitem>
<simpara>
RecursiveRegexIterator RecursiveRegexIterator::getChildren()
- Return the inner iterator's children contained in a
RecursiveRegexIterator
</simpara>
</listitem>
<listitem>
<simpara>
bool RecursiveRegexIterator::hasChildren()
- Check whether the inner iterator's current element has children
</simpara>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</section>
<section id="migration52.global-constants">
<title>New Global Constants</title>
<para>PHP Core:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>M_EULER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_LNPI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_SQRT3</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>M_SQRTPI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PATHINFO_FILENAME</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_BACKTRACK_LIMIT_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_BAD_UTF8_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_INTERNAL_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_NO_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PREG_RECURSION_LIMIT_ERROR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>UPLOAD_ERR_EXTENSION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_RD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_WR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>STREAM_SHUT_RDWR</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.curl">curl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>CURLE_FILESIZE_EXCEEDED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLE_FTP_SSL_FAILED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLE_LDAP_INVALID_URL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_DEFAULT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_SSL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPAUTH_TLS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_ALL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_CONTROL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_NONE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLFTPSSL_TRY</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_FTP_SSL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CURLOPT_FTPSSLAUTH</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.ming">ming</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>SWFTEXTFIELD_USEFONT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWFTEXTFIELD_AUTOSIZE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NOT_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_ADPCM_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_MP3_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NOT_COMPRESSED_LE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_NELLY_COMPRESSED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_5KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_11KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_22KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_44KHZ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_8BITS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_16BITS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_MONO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SWF_SOUND_STEREO</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.openssl">openssl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>OPENSSL_VERSION_NUMBER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>OPENSSL_VERSION_TEXT</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.snmp">snmp</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>SNMP_OID_OUTPUT_FULL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SNMP_OID_OUTPUT_NUMERIC</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.sem">Semaphore</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>MSG_EAGAIN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>MSG_ENOMSG</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.class-constants">
<title>New Class Constants</title>
<para><link linkend="ref.pdo">pdo</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>PDO::ATTR_DEFAULT_FETCH_MODE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FETCH_PROPS_LATE</constant>
</simpara>
</listitem>
</itemizedlist>
<para><link linkend="ref.spl">spl</link>:</para>
<itemizedlist>
<listitem>
<simpara>
<constant>CachingIterator::FULL_CACHE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CachingIterator::TOSTRING_USE_INNER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::READ_AHEAD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::READ_CSV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SplFileObject::SKIP_EMPTY</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.newconf">
<title>New INI Configuration Directives</title>
<para>
New &php.ini; directives introduced in PHP 5.2.0:
</para>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.allow-url-include">allow_url_include</link>
</simpara>
<simpara>
This useful option makes it possible to differentiate between
standard file operations on remote files, and the inclusion of
remote files. While the former is usually desirable, the latter can
be a security risk if used naively. Starting with PHP 5.2.0, you can
allow remote file operations while disallowing the inclusion of
remote files in local scripts. In fact, this is the default
configuration.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.session.cookie-httponly">session.cookie_httponly</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section id="migration52.errorrep">
<title>Error Reporting</title>
<para>
Some of the existing <constant>E_ERROR</constant> conditions have been
converted to something that you can catch with a user-defined error
handler. If an <link
linkend="errorfunc.constants"><constant>E_RECOVERABLE_ERROR</constant></link>
is not handled, it will behave in the same way as
<constant>E_ERROR</constant> behaves in all versions of PHP. Errors of
this type are logged as <literal>Catchable fatal error</literal>.
</para>
<para>
This change means that the value of the <constant>E_ALL</constant>
<link linkend="ini.error-reporting">error_reporting</link> constant is
now 6143, where the previous value was 2047. Because PHP constants have
no meaning outside of PHP, in some cases the integer value is used
instead so these will need to be adjusted. So for example if you are
setting the error_reporting mode from either the
<link linkend="apache.configuration">httpd.conf</link> or the
<filename>.htaccess</filename> files, you will need to adjust the value
accordingly. The same applies if you use the numeric value rather than the
constant in your PHP scripts.
</para>
<para>
As a side-effect of a change made to prevent duplicate error messages when
<link linkend="ini.track-errors">track_errors</link> is
<literal>On</literal>, it is now necessary to return &false; from your
error handler in order to populate
<link linkend="reserved.variables.phperrormsg">$php_errormsg</link>. This
provides you fine-grain control over the levels of messages stored.
</para>
</section>
<section id="migration52.other">
<title>Other Enhancements</title>
<itemizedlist>
<listitem>
<simpara>
Improved memory manager and increased default memory limit.
</simpara>
<simpara>
The new memory manager allocates less memory and works faster than the
previous incarnation. It allocates memory from the system in large blocks,
and then manages the heap by itself. The memory_limit value in &php.ini; is
checked, not for each emalloc() call (as before), but for actual blocks
requested from the system. This means that memory_limit is far more
accurate than it used to be, since the old memory manager didn't calculate
all the memory overhead used by the malloc library.
</simpara>
<simpara>
Thanks to this new-found accuracy memory usage may appear to have increased,
although actually it has not. To accommodate this apparent increase, the
default memory_limit setting was also increased - from 8 to 16 megabytes.
</simpara>
</listitem>
<listitem>
<simpara>
Added support for constructors in interfaces to force constructor signature
checks in implementations.
</simpara>
<simpara>
Starting with PHP 5.2.0, interfaces can have constructors. However, if you \
choose
to declare a constructor in an interface, each class implementing that interface
MUST include a constructor with a signature matching that of the base interface
constructor. By 'signature' we mean the parameter and return type definitions,
including any type hints and including whether the data is passed by reference
or by value.
</simpara>
</listitem>
</itemizedlist>
</section>
</appendix>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic