Skip to content

Instantly share code, notes, and snippets.

@royopa
Created January 6, 2015 09:56
Show Gist options
  • Save royopa/095038464351dc38963d to your computer and use it in GitHub Desktop.
Save royopa/095038464351dc38963d to your computer and use it in GitHub Desktop.
appendices/migration53.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 331031 Maintainer: rogerioprado Status: wip --><!-- CREDITS: milhomem -->
<appendix xml:id="migration53" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Migrando do PHP 5.2.x para o PHP 5.3.x</title>
<simpara>
&manual.migration.seealso;
<link linkend="migration5">5.0.x</link>,
<link linkend="migration51">5.1.x</link>,
<link linkend="migration52">5.2.x</link>,
<link linkend="migration54">5.4.x</link> e
<link linkend="migration55">5.5.x</link>.
</simpara>
<section xml:id="migration53.changes">
<title>O que mudou no PHP 5.3.x</title>
<simpara>
A maior parte das melhorias feitas no PHP 5.3.x não causam impacto em um código anterior.
Existem <link linkend="migration53.incompatible">algumas incompatibilidades</link>
e <link linkend="migration53.new-features">novos recursos</link> que devem ser considerados,
e o código deve ser testado antes de trocar uma
versão do PHP em ambientes de produrção.
</simpara>
<simpara>
Para sistemas atulizados de uma versão anterior do PHP, a documentação relevante
estã disponível em:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="migration52">Notas de atualização do PHP 5.2.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration51">Notas de atualização do PHP 5.1.x</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="migration5">Migrando do PHP 4 para o PHP 5</link>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.incompatible">
<title>Mudanças incompatíveis com versões anteriores</title>
<simpara>
Embora a moir parte do código PHP 5 existente deva funcionar sem nenhuma alteração, por favor esteja ciente de
que existem algumas mudanças incompatíveis:
</simpara>
<itemizedlist>
<listitem>
<simpara>
A nova API interna de compilação de parametro foi aplicada em todas as extensões
embarcadas com o PHP 5.3.x. Esta API de compilação de parametro faz com
que as funções retornem &null; quando parametros incompatíveis
são enviados. Existem algumas exceções a esta regra, como a função <function>get_class</function>,
que continua retornando &false; para errors.
</simpara>
</listitem>
<listitem>
<simpara>
<function>clearstatcache</function> não limpa mais o cache do realpath
por padão.
</simpara>
</listitem>
<listitem>
<simpara>
<function>realpath</function> agora é totalmente indepentende da plataforma.
A consequência disto é que caminhos relativos inválidos como
<literal>__FILE__ . "/../x"</literal> não vão mais funcionar.
</simpara>
</listitem>
<listitem>
<simpara>
A família de funções do <function>call_user_func</function> agora propagam
<literal>$this</literal> mesmo que o invocador seja uma classe pai.
</simpara>
</listitem>
<listitem>
<simpara>
As funções para array <function>natsort</function>,
<function>natcasesort</function>, <function>usort</function>,
<function>uasort</function>, <function>uksort</function>,
<function>array_flip</function>, e <function>array_unique</function>
não aceitam mais objetos enviados como argumentos. Para continuar enviando
objetos, primeiro converta o objeto para um array.
</simpara>
</listitem>
<listitem>
<simpara>
O comportamento de funções com parametros por referência mas chamadas pelo valor mudou. Onde antes a função
aceitaria um argumento pelo valor,
um erro falta é emitido. Qualquer código anterior passando constantes ou
literais para funções esperando referências, devem ser alterados para associar
o valor a uma variável antes de chamar a função.
</simpara>
</listitem>
<listitem>
<simpara>
A nova biblioteca do mysqlnd precisa precisa do novo formato de senhas do MySQL 4.1 com 41 bytes.
O uso do antigo formato de 16 bytes faz com que o
<function>mysql_connect</function> e funções similares emitam o erro:
<literal>"mysqlnd cannot connect to MySQL 4.1+ using old
authentication."</literal>
</simpara>
</listitem>
<listitem>
<simpara>
A nova biblioteca do mysqlnd não lê os arquivos de configurações do mysql
(my.cnf/my.ini), como a antiga biblioteca faz. Se seu código confia nas configurações contidas no
arquivo de configuração, você pode ler explicitamente com a função
<function>mysqli_options</function>. Perceba que isso significa que as constantes
específicas do PDO <constant>PDO::MYSQL_ATTR_READ_DEFAULT_FILE</constant>
e <constant>PDO::MYSQL_ATTR_READ_DEFAULT_GROUP</constant> não serão definidas se o suporte ao
MySQL no PDO for compilado com o mysqlnd.
</simpara>
</listitem>
<listitem>
<simpara>
A / no final foi removida da classe <classname>SplFileInfo</classname>
e outras classes de diretórios relacionados.
</simpara>
</listitem>
<listitem>
<simpara>
O método mágico <link linkend="object.tostring">__toString()</link>
não mais aceita argumentos.
</simpara>
</listitem>
<listitem>
<simpara>
Os métodos mágicos
<link linkend="object.get">__get()</link>,
<link linkend="object.set">__set()</link>,
<link linkend="object.isset">__isset()</link>,
<link linkend="object.unset">__unset()</link>, e
<link linkend="object.call">__call()</link> devem sempre
ser declarados como public e não podem mais ser static. As assinaturas de método agora são obrigatórias.
</simpara>
</listitem>
<listitem>
<simpara>
O método mágico <link linkend="object.call">__call()</link>
agora é invocado no acesso de métodos private e protected.
</simpara>
</listitem>
<listitem>
<simpara>
<function>func_get_arg</function>, <function>func_get_args</function> e
<function>func_num_args</function> não podem mais ser chamadas do escopo
mais alto de um arquivo que foi incluído pela função
<function>include</function> ou <function>require</function> de dentro da função
no arquivo que fez a chamada.
</simpara>
</listitem>
<listitem>
<simpara>
Uma camada de emulação para a extensão MHASH para encapsular a extensão Hash
foi adicionada. Entretando nem todos os algorítimos foram cobertos, notavelmente
o algorítimo de hash s2k. Isso significa que o s2k não está mais disponível
no PHP 5.3.0.
</simpara>
</listitem>
</itemizedlist>
<simpara>
As seguintes palavras chaves agora estão reservadas e não podem ser utilizadas em funções,
classes, nomes e etc.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="control-structures.goto">goto</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.namespaces">namespace</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-features">
<title>Novos recursos</title>
<simpara>
PHP 5.3.0 oferece uma grande gama de novos recursos:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Suporte para <link linkend="language.namespaces">namespaces</link> foi
adicionado.
</simpara>
</listitem>
<listitem>
<simpara>
Suporte para <link linkend="language.oop5.late-static-bindings">Late Static
Bindings</link> foi adicionado.
</simpara>
</listitem>
<listitem>
<simpara>
Suporte para <link linkend="control-structures.goto">jump labels</link>
(limitado a goto) foi adicionado.
</simpara>
</listitem>
<listitem>
<simpara>
Suporte nativo para <link linkend="functions.anonymous">Closures</link>
(função Lambda/Anônima) foi adicionado.
</simpara>
</listitem>
<listitem>
<simpara>
Existem dois novos métodos mágicos,
<link linkend="object.callstatic">__callStatic()</link> e
<link linkend="object.invoke">__invoke()</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.string.syntax.nowdoc">Nowdoc</link> sintaxe é
suportada agora, similar a
<link linkend="language.types.string.syntax.heredoc">Heredoc</link> sintaxe,
mas com aspas simples.
</simpara>
</listitem>
<listitem>
<simpara>
Agora é possível usar
<link linkend="language.types.string.syntax.heredoc">Heredoc</link>s para
inicializar variáveis estáticas e propriedades/constantes de classes.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.types.string.syntax.heredoc">Heredoc</link>s pode
ser declarado com aspas duplas, complementando a sintaxe do
<link linkend="language.types.string.syntax.nowdoc">Nowdoc</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="language.constants.syntax">Constantes</link> pode ser
declaradas fora da classe usando o palavra chave <literal>const</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
O operador <link linkend="language.operators.comparison.ternary">ternário</link>
operator agora tem uma forma de atalho: <literal>?:</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
O HTTP stream wrapper agora considera todos os códigos de status do 200 ao 399
como status de sucesso.
</simpara>
</listitem>
<listitem>
<simpara>
Acesso dinâmico a métodos státicos agora é possível:
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class C {
public static $foo = 123;
}
$a = "C";
echo $a::$foo;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
123
]]>
</screen>
</informalexample>
</listitem>
<listitem>
<simpara>
<link linkend="language.exceptions">Exceptions</link> podem ser aninhados:
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class MyCustomException extends Exception {}
try {
throw new MyCustomException("Exceptional", 112);
} catch (Exception $e) {
/* Note the use of the third parameter to pass $e
* into the RuntimeException. */
throw new RuntimeException("Rethrowing", 911, $e);
}
?>
]]>
</programlisting>
</informalexample>
</listitem>
<listitem>
<simpara>
Um <link linkend="features.gc">garbage collector</link> para referências circulares
foi adicionado, e agora está ativo por padrão.
</simpara>
</listitem>
<listitem>
<simpara>
A função <function>mail</function> agora tem suporte para registrar em log o email enviado
via a diretiva de configuração <link linkend="ini.mail.log">mail.log</link>.
(Nota: Isto se aplica apenas para emails enviados através desta função.)
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.windows">
<title>Mudanças feitas para suporte ao Windows</title>
<simpara>
Mudanças para a versão do Windows:
</simpara>
<itemizedlist>
<listitem>
<simpara>
O versão mínima do Windows agora é o Windows XP SP3. Windows 98, ME, 2000 e NT
não são mais suportados.
</simpara>
</listitem>
<listitem>
<simpara>
Os binários do Windows são construídos para i586 e mais novos. i386 e i486 não são
suportados.
</simpara>
</listitem>
<listitem>
<simpara>
Agora existe um suporte experimental para versões x64 do PHP para Windows.
</simpara>
</listitem>
<listitem>
<simpara>
Agora existe suporte para o compilador do Visual C++ 9 (VC9), usando Visual Studio
2008. Snapshots e releases serão disponibilizadas para VC9. Binários antigos
usando VC6 ainda são suportados e disponibilizados em linha com o VC9.
</simpara>
</listitem>
<listitem>
<simpara>
A biblioteca <link linkend="ref.pdo-oci">PDO_OCI</link>
<literal>php_pdo_oci8.dll</literal> (para uso com bibliotecas cliente
do Oracle versão 8) não está mais sendo construída. Em vez disso, use
<literal>php_pdo_oci.dll</literal> (note que não tem '8') com bibliotecas cliente do Oracle 10 ou 11.
Conexões para outras versões do banco de dados ainda são suportadas.
</simpara>
</listitem>
<listitem>
<simpara>
Para a extensão <link linkend="book.oci8">OCI8</link>, uma nova biblioteca
<literal>php_oci8_11g.dll</literal> está disponível em adição à
<literal>php_oci8.dll</literal>. Só uma pode ser ativada por vez. Use
<literal>php_oci8.dll</literal> com bibliotecas cliente do Oracle 10.2. Use
<literal>php_oci8_11g.dll</literal> com bibliotecas cliente do Oracle 11.
Conexões para outras versões do banco de dados ainda são suportadas.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Suporte ao Windows foi adicionado para as seguintes funções:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>checkdnsrr</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>dns_get_record</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>fnmatch</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>getmxrr</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>getopt</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>imagecolorclosesthwb</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>inet_ntop</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>inet_pton</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>link</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>linkinfo</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>mcrypt_create_iv</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>readlink</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>socket_create_pair</function>
- Esta função já estava disponível no Windows, mas foi desativada no
PHP 4.3.0 devido à um bug.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_socket_pair</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>symlink</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>time_nanosleep</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>time_sleep_until</function>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Outras modifições:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Melhoramos a portabilidade das funções <function>stat</function>,
<function>touch</function>, <function>filemtime</function>,
<function>filesize</function>, e outras funções relacionadas (100%
portável para o dado disponível).
</simpara>
</listitem>
<listitem>
<simpara>
Agora é possível criar hard link no Windows usando a função
<function>link</function>, e link simbólico usando a função
<function>symlink</function>. Hard links estão disponívies no
Windows 2000, e links simbólicos no Windows Vista.
</simpara>
</listitem>
<listitem>
<simpara>
The Windows version of PHP now exposes a set of constants prefixed
<literal>PHP_WINDOWS_*</literal>. A list of these constants and their usage
can be found at <xref linkend="info.constants" />.
</simpara>
</listitem>
</itemizedlist>
<warning>
<simpara>
Suporte para o módulo ISAPI foi removido. Use o módulo aprimorado do FastCGI SAPI
no lugar.
</simpara>
</warning>
<note>
<simpara>
Um novo site dedicado para o PHP no Windows está disponível, incluindo
downloads, release candidates, e snapshots em vários modos
(thread-safe/not-thread-safe, VC6/VC9, x86/x64). A URL deste site é
<link xlink:href="&url.php.windows;">&url.php.windows;</link>.
</simpara>
</note>
</section>
<section xml:id="migration53.sapi">
<title>Mudanças nos módulos SAPI</title>
<itemizedlist>
<listitem>
<simpara>
Um novo módulo SAPI nomeado litespeed está disponível.
</simpara>
</listitem>
<listitem>
<simpara>
Suporte ao FastCGI no CGI SAPI agora está sempre ativado e não pode ser desativado.
Veja <literal>sapi/cgi/CHANGES</literal> para maiores detalhes.
</simpara>
</listitem>
<listitem>
<simpara>
Uma nova opção CGI SAPI, <literal>-T</literal>, pode ser utilizada para medir a
quantidade de execuções repetidas de um script.
</simpara>
</listitem>
<listitem>
<simpara>
CGI/FastCGI agora tem suporte para arquivos .htaccess-style user-defined &php.ini;
.
</simpara>
</listitem>
<listitem>
<simpara>
A função <function>dl</function> está desativado por padrão, e agora está disponível apenas
sob o CLI, CGI, e embutido SAPIs.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.deprecated">
<title>Recursos em desuso no PHP 5.3.x</title>
<simpara>
PHP 5.3.0 introduces two new error levels: <constant>E_DEPRECATED</constant>
and <constant>E_USER_DEPRECATED</constant>. The
<constant>E_DEPRECATED</constant> error level is used to indicate that a
function or feature has been deprecated. The
<constant>E_USER_DEPRECATED</constant> level is intended for indicating
deprecated features in user code, similarly to the
<constant>E_USER_ERROR</constant> and <constant>E_USER_WARNING</constant>
levels.
</simpara>
<simpara>
The following is a list of deprecated INI directives. Use of any of these INI
directives will cause an <constant>E_DEPRECATED</constant> error to be thrown
at startup.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.define-syslog-variables">define_syslog_variables</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.register-globals">register_globals</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.register-long-arrays">register_long_arrays</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.safe-mode">safe_mode</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.magic-quotes-sybase">magic_quotes_sybase</link>
</simpara>
</listitem>
<listitem>
<simpara>
Comments starting with '#' are now deprecated in .INI files.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Deprecated functions:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>call_user_method</function> (use
<function>call_user_func</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>call_user_method_array</function> (use
<function>call_user_func_array</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>define_syslog_variables</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>dl</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>ereg</function> (use <function>preg_match</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>ereg_replace</function> (use <function>preg_replace</function>
instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>eregi</function> (use <function>preg_match</function> with the
<literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>eregi_replace</function> (use <function>preg_replace</function>
with the <literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>set_magic_quotes_runtime</function> and its alias,
<function>magic_quotes_runtime</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_register</function> (use the <varname>$_SESSION</varname>
superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_unregister</function> (use the
<varname>$_SESSION</varname> superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_is_registered</function> (use the
<varname>$_SESSION</varname> superglobal instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>set_socket_blocking</function> (use
<function>stream_set_blocking</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>split</function> (use <function>preg_split</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>spliti</function> (use <function>preg_split</function> with the
<literal>'i'</literal> modifier instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>sql_regcase</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysql_db_query</function> (use
<function>mysql_select_db</function> and <function>mysql_query</function>
instead)
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysql_escape_string</function> (use
<function>mysql_real_escape_string</function> instead)
</simpara>
</listitem>
<listitem>
<simpara>
Passing locale category names as strings is now deprecated. Use the LC_*
family of constants instead.
</simpara>
</listitem>
<listitem>
<simpara>
The <parameter>is_dst</parameter> parameter to <function>mktime</function>.
Use the new timezone handling functions instead.
</simpara>
</listitem>
</itemizedlist>
<simpara>
Deprecated features:
</simpara>
<itemizedlist>
<listitem>
<simpara>
Assigning the return value of
<link linkend="language.oop5.basic.new">new</link> by reference is now
deprecated.
</simpara>
</listitem>
<listitem>
<simpara>
Call-time pass-by-reference is now deprecated.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.undeprecated">
<title>Undeprecated features in PHP 5.3.x</title>
<simpara>
The <function>is_a</function> function has been undeprecated by popular
request; it will no longer issue an <constant>E_STRICT</constant> error.
</simpara>
</section>
<section xml:id="migration53.parameters">
<title>New Parameters</title>
<simpara>
Several functions were given new, optional parameters in PHP 5.3:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>clearstatcache</function>
- Added <parameter>clear_realpath_cache</parameter> and
<parameter>filename</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>copy</function>
- Added a stream context parameter, <parameter>context</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>fgetcsv</function>
- Added <parameter>escape</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>ini_get_all</function>
- Added <parameter>details</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>nl2br</function>
- Added <parameter>is_xhtml</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>parse_ini_file</function>
- Added <parameter>scanner_mode</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>round</function>
- Added <parameter>mode</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_create</function>
- Added <parameter>params</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>strstr</function> and <function>stristr</function>
- Added <parameter>before_needle</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">json</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>json_encode</function>
- Added <parameter>options</parameter>.
</simpara>
</listitem>
<listitem>
<simpara>
<function>json_decode</function>
- Added <parameter>depth</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.stream">Streams</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>stream_select</function>,
<function>stream_set_blocking</function>,
<function>stream_set_timeout</function>, and
<function>stream_set_write_buffer</function> now work with user-space
stream wrappers.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.sybase">sybase_ct</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>sybase_connect</function>
- Added <parameter>new</parameter>.
</simpara>
</listitem>
</itemizedlist>
<simpara>
New method parameters in PHP 5.3.0:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>Exception::__construct</methodname>
- Added <parameter>previous</parameter>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.functions">
<title>New Functions</title>
<simpara>
PHP 5.3 introduced some new functions:
</simpara>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>array_replace</function>
- Replaces elements from passed arrays into one array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>array_replace_recursive</function>
- Recursively replaces elements from passed arrays into one array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>class_alias</function>
- Creates an alias for a user defined class.
</simpara>
</listitem>
<listitem>
<simpara>
<function>forward_static_call</function>
- Call a user function from a method context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>forward_static_call_array</function>
- Call a user function from a method context, with the arguments contained
in an array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_collect_cycles</function>
- Forces collection of any existing garbage cycles.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_disable</function>
- Deactivates the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_enable</function>
- Activates the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gc_enabled</function>
- Returns the status of the circular reference collector.
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_called_class</function>
- Return the name of the class a static method is called in.
</simpara>
</listitem>
<listitem>
<simpara>
<function>gethostname</function>
- Return the current host name for the local machine.
</simpara>
</listitem>
<listitem>
<simpara>
<function>header_remove</function>
- Removes an HTTP header previously set using the
<function>header</function> function.
</simpara>
</listitem>
<listitem>
<simpara>
<function>lcfirst</function>
- Make a string's first character lowercase.
</simpara>
</listitem>
<listitem>
<simpara>
<function>parse_ini_string</function>
- Parse a configuration string.
</simpara>
</listitem>
<listitem>
<simpara>
<function>quoted_printable_encode</function>
- Convert an 8 bit string to a quoted-printable string.
</simpara>
</listitem>
<listitem>
<simpara>
<function>str_getcsv</function>
- Parse a CSV string into an array.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_set_default</function>
- Set the default stream context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_supports_lock</function>
- Return &true; if the stream supports locking.
</simpara>
</listitem>
<listitem>
<simpara>
<function>stream_context_get_params</function>
- Retrieve parameters from a stream context.
</simpara>
</listitem>
<listitem>
<simpara>
<function>streamWrapper::stream_cast</function>
- Retrieve the underlying stream resource.
</simpara>
</listitem>
<listitem>
<simpara>
<function>streamWrapper::stream_set_option</function>
- Change stream options
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>date_add</function>
- Adds an amount of days, months, years, hours, minutes and seconds to a
<classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_create_from_format</function>
- Returns a new <classname>DateTime</classname> object formatted according
to the given format.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_diff</function>
- Returns the difference between two <classname>DateTime</classname>
objects.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_get_last_errors</function>
- Returns the warnings and errors from the last date/time operation.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_parse_from_format</function>
- Get infoformation about a given date.
</simpara>
</listitem>
<listitem>
<simpara>
<function>date_sub</function>
- Subtracts an amount of days, months, years, hours, minutes and seconds
from a <classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>timezone_version_get</function>
- Returns the version of the timezonedb.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.gmp">GMP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>gmp_testbit</function>
- Tests whether a bit is set.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.hash">Hash</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>hash_copy</function>
- Copy hashing context.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.imap">IMAP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>imap_gc</function>
- Clears IMAP cache.
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_utf8_to_mutf7</function>
- Encode a UTF-8 string to modified UTF-7.
</simpara>
</listitem>
<listitem>
<simpara>
<function>imap_mutf7_to_utf8</function>
- Decode a modified UTF-7 string to UTF-8.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">JSON</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>json_last_error</function>
- Returns the last JSON error that occurred.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.mysqli">MySQL Improved</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>mysqli_fetch_all</function>
- Fetches all result rows as an associative array, a numeric
array, or both.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_get_connection_stats</function>
- Returns statistics about the client connection.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_poll</function>
- Poll connections.
</simpara>
</listitem>
<listitem>
<simpara>
<function>mysqli_reap_async_query</function>
- Get result from async query.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.openssl">OpenSSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>openssl_random_pseudo_bytes</function>
- Returns a string of the given length specified, filled with pseudo-random
bytes.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcntl">PCNTL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>pcntl_signal_dispatch</function>
- Calls signal handlers for pending signals.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigprocmask</function>
- Sets and retrieves blocked signals.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigtimedwait</function>
- Wait for signals with a timeout.
</simpara>
</listitem>
<listitem>
<simpara>
<function>pcntl_sigwaitinfo</function>
- Wait for signals.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcre">PCRE</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>preg_filter</function>
- Perform a regular expression search and replace, returning only results
which matched the pattern.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.sem">Semaphore</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>msg_queue_exists</function>
- Check whether a message queue exists.
</simpara>
</listitem>
<listitem>
<simpara>
<function>shm_has_var</function>
- Checks whether a specific key exists inside a shared memory segment.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following functions are now natively implemented, making them available
on all operating systems which can run PHP:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>acosh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>asinh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>atanh</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>expm1</function>
</simpara>
</listitem>
<listitem>
<simpara>
<function>log1p</function>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-stream-wrappers">
<title>New stream wrappers</title>
<simpara>
The following stream wrappers were introduced in 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="wrappers.glob">glob://</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="wrappers.phar">phar://</link>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-stream-filters">
<title>New stream filters</title>
<simpara>
The following stream filters were introduced in 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
dechunk (reverses HTTP chunked encoding)
</simpara>
</listitem>
<listitem>
<simpara>
The bz2.decompress filter now supports concatenation.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.class-constants">
<title>New Class Constants</title>
<simpara>
Several new class constants were introduced in 5.3.0:
</simpara>
<simpara><link linkend="ref.pdo-firebird">PDO_FIREBIRD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_DATE_FORMAT</constant>
- Sets the format for dates.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_TIME_FORMAT</constant>
- Sets the format for time.
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PDO::FB_ATTR_TIMESTAMP_FORMAT</constant>
- Sets the format for timestamps.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.methods">
<title>New Methods</title>
<simpara>
Several new methods were introduced in 5.3.0:
</simpara>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>DateTime::add</function>
- Adds an amount of days, months, years, hours, minutes and seconds to a
<classname>DateTime</classname> object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::createFromFormat</function>
- Returns a new <classname>DateTime</classname> object formatted according
to the given format.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::diff</function>
- Returns the difference between two <classname>DateTime</classname>
objects.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::getLastErrors</function>
- Returns the warnings and errors from the last date/time operation.
</simpara>
</listitem>
<listitem>
<simpara>
<function>DateTime::sub</function>
- Subtracts an amount of days, months, years, hours, minutes and seconds
from a <classname>DateTime</classname> object.
</simpara>
</listitem>
</itemizedlist>
<simpara><classname>Exception</classname>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>Exception::getPrevious</function>
- Retrieves the previous exception.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.dom">DOM</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>DOMNode::getLineNo</function>
- Get the line number of a parsed node.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="ref.pdo-firebird">PDO_FIREBIRD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>PDO::setAttribute</function>
- Sets an attribute.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.reflection">Reflection</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<methodname>ReflectionClass::getNamespaceName</methodname>
- Returns the name of namespace where this class is defined.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionClass::getShortName</methodname>
- Returns the short name of this class (without namespace part).
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionClass::inNamespace</methodname>
- Returns whether this class is defined in a namespace.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::getNamespaceName</methodname>
- Returns the name of namespace where this function is defined.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::getShortName</methodname>
- Returns the short name of the function (without namespace part).
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionFunction::inNamespace</methodname>
- Returns whether this function is defined in a namespace.
</simpara>
</listitem>
<listitem>
<simpara>
<methodname>ReflectionProperty::setAccessible</methodname>
- Sets whether non-public properties can be requested.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>SplObjectStorage::addAll</function>
- Add all elements from another SplObjectStorage object.
</simpara>
</listitem>
<listitem>
<simpara>
<function>SplObjectStorage::removeAll</function>
- Remove all elements from another SplObjectStorage object.
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.xsl">XSL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<function>XSLTProcessor::setProfiling</function>
- Sets the profiling output file.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.new-extensions">
<title>New Extensions</title>
<simpara>
The following new extensions are added (by default) as of PHP 5.3.0:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.enchant">Enchant</link>
- An abstraction layer above various spelling libraries
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fileinfo">Fileinfo</link>
- An improved and more solid replacement, featuring full BC, for the
<link linkend="book.mime-magic">Mimetype</link> extension, which has been
removed.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.intl">INTL</link>
- Internationalization extension. INTL is a wrapper around the
<link xlink:href="&url.icu.home;">ICU</link> library.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.phar">Phar</link>
- Implementation of PHP-Archive files.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.sqlite3">SQLite3</link>
- Support for SQLite version 3 databases.
</simpara>
</listitem>
</itemizedlist>
<simpara>
mysqlnd is a new core library shipped with PHP. It is a PHP-specific
replacement for libmysqlclient. mysqlnd will be used to build the
<link linkend="book.mysql">mysql</link>,
<link linkend="book.mysqli">mysqli</link>
and <link linkend="ref.pdo-mysql">PDO_MySQL</link> extensions if libmysqlclient
isn't found on the system. It may also be used instead of libmysqlclient even when
libmysqlclient is present. mysqlnd is recommended for all PHP installations for
performance reasons.
</simpara>
</section>
<section xml:id="migration53.removed-extensions">
<title>Removed Extensions</title>
<simpara>
These extensions have been moved to PECL and are no longer part of the PHP
distribution. The PECL package versions of these extensions will be created
according to user demand.
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.dbase">dbase</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fbsql">fbsql</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.fdf">fdf</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.ming">ming</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.msql">msql</link>
- No longer maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.ncurses">ncurses</link>
- Maintained
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.sybase">sybase</link>
- Discontinued; use the <link linkend="book.sybase">sybase_ct</link>
extension instead
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mhash">mhash</link>
- Discontinued; use the <link linkend="book.hash">hash</link> extension
instead. <link linkend="book.hash">hash</link> has full mhash
compatibility; all existing applications using the old functions will
continue to work.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.extensions-other">
<title>Other changes to extensions</title>
<simpara>
The following extensions can no longer be disabled during build
configuration:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.pcre">PCRE</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.reflection">Reflection</link>
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.spl">SPL</link>
</simpara>
</listitem>
</itemizedlist>
<simpara>
Changes in extension behaviour, and new features:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="book.datetime">Date and Time</link>
- The TZ environment variable is no longer used to guess the timezone
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.curl">cURL</link>
- cURL now supports SSH
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.network">Network</link>
- <function>dns_check_record</function> now returns an extra "entries"
index, containing the TXT elements.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.hash">Hash</link>
- The SHA-224 and salsa hash algorithms are now supported.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mbstring">mbstring</link>
- Now supports CP850 encoding.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.oci8">OCI8</link>
- A call to <function>oci_close</function> on a persistent connection, or a
variable referencing a persistent connection going out of scope, will now
roll back any uncommitted transaction. To avoid unexpected behavior,
explicitly issue a commit or roll back as needed. The old behavior can be
enabled with the INI directive
<link linkend="ini.oci8.old-oci-close-semantics">oci8.old_oci_close_semantics</link>.
</simpara>
<simpara>
Database Resident Connection Pooling (DRCP) and Fast Application
Notification (FAN) are now supported.
</simpara>
<simpara>
Oracle External Authentication is now supported (except on Windows).
</simpara>
<simpara>
The <function>oci_bind_by_name</function> function now supports SQLT_AFC
(aka the CHAR datatype).
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.openssl">OpenSSL</link>
- OpenSSL digest and cipher functions are now supported. It is also
now possible to access the internal values of DSA, RSA and DH keys.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.session">Session</link>
- Sessions will no longer store session-files in <literal>"/tmp"</literal>
when <link linkend="ini.open-basedir">open_basedir</link> restrictions
apply, unless <literal>"/tmp"</literal> is explicitly added to the list of
allowed paths.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.soap">SOAP</link>
Now supports sending user supplied HTTP headers.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.mysqli">MySQLi</link>
Now supports persistent connections, by prepending the hostname with
<literal>"p:"</literal>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="book.image">Image Processing and GD</link>
The "JPG Support" index returned from <function>gd_info</function> has
been renamed to "JPEG Support".
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.classes">
<title>New Classes</title>
<simpara>
The following classes were introduced in PHP 5.3.0:
</simpara>
<simpara><link linkend="book.datetime">Date/Time</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>DateInterval</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>DatePeriod</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.phar">Phar</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>Phar</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharData</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharException</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>PharFileInfo</classname>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.spl">SPL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<classname>FilesystemIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>GlobIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>MultipleIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>RecursiveTreeIterator</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplDoublyLinkedList</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplFixedArray</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplMaxHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplMinHeap</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplPriorityQueue</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplQueue</classname>
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplStack</classname>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.global-constants">
<title>New Global Constants</title>
<simpara>PHP Core:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>__DIR__</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>__NAMESPACE__</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>E_DEPRECATED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>E_USER_DEPRECATED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INI_SCANNER_NORMAL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>INI_SCANNER_RAW</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_MAXPATHLEN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_DOMAIN_CONTROLLER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_SERVER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_NT_WORKSTATION</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_BUILD</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_MAJOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_MINOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_PLATFORM</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_PRODUCTTYPE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SP_MAJOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SP_MINOR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>PHP_WINDOWS_VERSION_SUITEMASK</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.curl">cURL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>CURLOPT_PROGRESSFUNCTION</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.image">GD</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>IMG_FILTER_PIXELATE</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.json">JSON</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>JSON_ERROR_CTRL_CHAR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_DEPTH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_NONE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_STATE_MISMATCH</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_ERROR_SYNTAX</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_FORCE_OBJECT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_TAG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_AMP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_APOS</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>JSON_HEX_QUOT</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.ldap">LDAP</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>LDAP_OPT_NETWORK_TIMEOUT</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.libxml">libxml</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>LIBXML_LOADED_VERSION </constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcre">PCRE</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>PREG_BAD_UTF8_OFFSET_ERROR</constant>
</simpara>
</listitem>
</itemizedlist>
<simpara><link linkend="book.pcntl">PCNTL</link>:</simpara>
<itemizedlist>
<listitem>
<simpara>
<constant>BUS_ADRALN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>BUS_ADRERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>BUS_OBJERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_CONTIUNED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_DUMPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_EXITED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_KILLED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_STOPPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>CLD_TRAPPED</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTDIV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTINV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTOVF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTRES</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTSUB</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_FLTUND</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_INTDIV</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>FPE_INTOVF</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_BADSTK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_COPROC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLADR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLOPC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLOPN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_ILLTRP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_PRVOPC</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>ILL_PRVREG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_ERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_HUP</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_IN</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_MSG</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_OUT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>POLL_PRI</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SEGV_ACCERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SEGV_MAPERR</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_ASYNCIO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_KERNEL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_MESGQ</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_NOINFO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_QUEUE</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_SIGIO</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_TIMER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_TKILL</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SI_USER</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_BLOCK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_SETMASK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>SIG_UNBLOCK</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>TRAP_BRKPT</constant>
</simpara>
</listitem>
<listitem>
<simpara>
<constant>TRAP_TRACE</constant>
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.ini">
<title>Changes to INI file handling</title>
<simpara>
PHP 5.3.0 has significantly improved performance and parsing of INI files,
and adds several new syntax features.
</simpara>
<itemizedlist>
<listitem>
<simpara>
The standard &php.ini; files have been re-organized and renamed.
<literal>php.ini-development</literal> contains settings recommded
for use in development environments. <literal>php.ini-production</literal>
contains settings recommended for use in production environments.
</simpara>
</listitem>
<listitem>
<simpara>
There is now support for two special sections:
<literal>[PATH=/opt/httpd/www.example.com/]</literal> and
<literal>[HOST=www.example.com]</literal>. Directives set in these
sections cannot be overridden by user-defined INI files or at
runtime. More information about these sections can be found
<link linkend="ini.sections">here</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend-extension-debug">zend_extension_debug</link>,
<link linkend="ini.zend-extension-debug-ts">zend_extension_debug_ts</link>
and <link linkend="ini.zend-extension-ts">zend_extension_ts</link> have
been removed. Use the
<link linkend="ini.zend-extension">zend_extension</link> directive to
load all Zend Extensions.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link>
has been removed. If this INI directive is set to On, an
<constant>E_ERROR</constant> error is emitted at startup.
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to use the full path to load modules using the
<link linkend="ini.extension">extension</link> directive.
</simpara>
</listitem>
<listitem>
<simpara>
<literal>"ini-variables"</literal> can now be used almost anywhere in a
&php.ini; file.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.open-basedir">open_basedir</link> restrictions may now
be tighted at runtime, and the directive is now PHP_INI_ALL.
</simpara>
</listitem>
<listitem>
<simpara>
It is now possible to use alphanumeric or variable indices in INI option
arrays.
</simpara>
</listitem>
<listitem>
<simpara>
<function>get_cfg_var</function> is now able to return "array" INI options.
</simpara>
</listitem>
<listitem>
<simpara>
Two new mail directives:
<link linkend="ini.mail.add-x-header">mail.add_x_header</link> and
<link linkend="ini.mail.log">mail.log</link>, have been added.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following new ini directives have been added:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<literal>user_ini.filename</literal> and
<literal>user_ini.cache_ttl</literal> have been added to control the use
of <link linkend="configuration.file.per-user">user INI files</link>.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.exit-on-timeout">exit_on_timeout</link> has been added
to force Apache 1.x children to exit if a PHP execution timeout occurs.
</simpara>
</listitem>
<listitem>
<simpara>
Added <literal>mbstring.http_output_conv_mimetype</literal>.
This directive specifies the regex pattern of content types for which
<function>mb_output_handler</function> is activated.
</simpara>
</listitem>
<listitem>
<simpara>
Added <link linkend="ini.request-order">request_order</link>.
Allows controlling which external variables will be available in
<varname>$_REQUEST</varname>.
</simpara>
</listitem>
</itemizedlist>
<simpara>
The following ini directives have new default values:
</simpara>
<itemizedlist>
<listitem>
<simpara>
<link linkend="ini.session.use-only-cookies">session.use_only_cookies</link>
is now set to <literal>"1"</literal> (enabled) by default.
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="ini.oci8.default-prefetch">oci8.default_prefetch</link>
has changed from <literal>"10"</literal> to <literal>"100"</literal>.
</simpara>
</listitem>
</itemizedlist>
</section>
<section xml:id="migration53.other">
<title>Other changes</title>
<itemizedlist>
<listitem>
<simpara>
<function>SplFileInfo::getpathinfo</function> now returns information about
the path name.
</simpara>
</listitem>
<listitem>
<simpara>
<classname>SplObjectStorage</classname> now has
<classname>ArrayAccess</classname> support. It is now also possible to
store associative information with objects in
<classname>SplObjectStorage</classname>.
</simpara>
</listitem>
<listitem>
<simpara>
In the GD extension, there is now pixelation support available through
the <function>imagefilter</function> function.
</simpara>
</listitem>
<listitem>
<simpara>
<function>var_dump</function> output now includes private object properties.
</simpara>
</listitem>
<listitem>
<simpara>
<function>session_start</function> now returns &false; when session startup
fails.
</simpara>
</listitem>
<listitem>
<simpara>
<function>property_exists</function> now checks the existence of a property
independent of accessibility (like <function>method_exists</function>).
</simpara>
</listitem>
<listitem>
<simpara>
<link linkend="wrappers">Stream wrappers</link> can now be used by
<link linkend="ini.include-path">include_path</link>.
</simpara>
</listitem>
<listitem>
<simpara>
The <parameter>initial</parameter> parameter for
<function>array_reduce</function> can now be of any type.
</simpara>
</listitem>
<listitem>
<simpara>
The <link linkend="ref.dir">directory functions</link>
<function>opendir</function>, <function>scandir</function>, and
<function>dir</function> now use the default stream context if no explicit
context is passed.
</simpara>
</listitem>
<listitem>
<simpara>
<function>crypt</function> now has Blowfish and extended DES support, and
<function>crypt</function> features are now 100% portable. PHP has its own
internal crypt implementation which drops into place when support for
<literal>crypt</literal> or <literal>crypt_r</literal> is not found.
</simpara>
</listitem>
<listitem>
<simpara>
<function>getopt</function> now accepts "long options" on all platforms.
Optional values and <literal>=</literal> as a separator for short options
are now supported.
</simpara>
</listitem>
<listitem>
<simpara>
<function>fopen</function> has a new mode option (<literal>n</literal>),
which passes <constant>O_NONBLOCK</constant> to the underlying
<literal>open()</literal> system call. Note that this mode is not currently
supported on Windows.
</simpara>
</listitem>
<listitem>
<simpara>
<function>getimagesize</function> now supports icon files (.ico).
</simpara>
</listitem>
<listitem>
<simpara>
The mhash extension have moved to PECL, but the
<link linkend="ref.hash">Hash</link> extension have been modified to support
mhash if PHP is compiled with <literal>--with-mhash</literal>. Note that the
Hash extension does not require the mhash library to be available whether or
not the mhash emulation is enabled.
</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:"~/.phpdoc/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
-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment