cvs: phpdoc-ro /appendices migration52.xml
| From: | Simion Onea | Date: | Fri, 04 Apr 2008 06:20:03 +0000 |
| Subject: | cvs: phpdoc-ro /appendices migration52.xml | ||
| Groups: | php.doc.ro | ||
| Request: | Send a blank email to doc-ro+get-392@lists.php.net to get a copy of this message | ||
simionea Fri Apr 4 06:20:03 2008 UTC
Added files:
/phpdoc-ro/appendices migration52.xml
Log:
Translated the file.
http://cvs.php.net/viewvc.cgi/phpdoc-ro/appendices/migration52.xml?view=markup&rev=1.1 Index: phpdoc-ro/appendices/migration52.xml +++ phpdoc-ro/appendices/migration52.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.34 Maintainer: simionea Status: translated --> <appendix xml:id="migration52" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Migrarea de la PHP 5.1.x la PHP 5.2.x</title> <section xml:id="migration52.changes"> <title>Ce s-a schimbat în PHP 5.2.x</title> <para> Majoritatea îmbunÄtÄÅ£irilor din PHP 5.2.x nu au nici un impact asupra codului-sursÄ existent. Sunt însÄ unele <link linkend="migration52.incompatible">mici incompatibilitÄÅ£i</link> Åi <link linkend="migration52.error-messages">noi mesaje de eroare</link> care trebuie luate în considerare, iar codul-sursÄ trebuie testat înainte de a schimba versiunile PHP în mediile de producÅ£ie. </para> <para> DacÄ sistemul este schimbat de la PHP 5.0.x, este necesar de citit Åi secÅ£iunea manualului întitulatÄ <link linkend="migration51">Note la reînnoirea pânÄ la PHP 5.1.x</link>. </para> <para> Similar, dacÄ sistemul este schimbat de la PHP 4, trebuie cititÄ Åi secÅ£iunea manualului întitulatÄ <link linkend="migration5">Migrarea de la PHP 4 la PHP 5</link>. </para> </section> <section xml:id="migration52.incompatible"> <title>SchimbÄri incompatibile în sens invers</title> <para> Cu toate cÄ codul-sursÄ existent în PHP 5 trebuie sÄ funcÅ£ioneze fÄrÄ schimbÄri, ar trebui sÄ atrageÅ£i atenÅ£ia la urmÄtoarele schimbÄri incompatibile în sens invers: </para> <itemizedlist> <listitem> <simpara> <function>getrusage</function> întoarce &null; când îi sunt transmise argumente incompatibile începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <link linkend="function.ziparchive-setCommentName"> <function>ZipArchive::setCommentName</function></link> întoarce &true; în caz de succes începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <link linkend="function.ziparchive-setcommentindex"> <function>ZipArchive::setCommentIndex</function></link> întoarce &true; în caz de succes începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <function>SplFileObject::getFilename</function> întoarce denumirea fiÅierului, Åi nu calea/relativÄ/spre/fiÅier, începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> S-a modificat prioritatea variabilei de mediu <varname>PHPRC</varname> pe sistemele Win32. </simpara> <simpara> Variabila de mediu <varname>PHPRC</varname> acum are prioritate faÅ£Ä de calea stocatÄ Ã®n registrul Windows. </simpara> </listitem> <listitem> <simpara> CLI SAPI nu mai cautÄ fiÅierele &php.ini; sau <filename>php-cli.ini</filename> în directorul curent. </simpara> <simpara> Ãn PHP 5.1.x a fost introdusÄ o facilitate nedocumentatÄ care fÄcea ca binarul CLI sÄ caute în Directorul de Lucru Curent (DLC) un fiÅier de configurare PHP, ducând potenÅ£ial la un comportament imprevizibil atunci când era citit un fiÅier de configurare neaÅteptat. AceastÄ funcÅ£ionalitate a fost eliminatÄ Ã®n versiunea 5.2.0, Åi PHP nu mai cautÄ Ã®n DLC fiÅierele &php.ini; sau <filename>php-cli.ini</filename>. AccesaÅ£i de asemenea secÅ£iunea manualului referitoare la <link linkend="features.commandline">linia de comandÄ</link>. </simpara> </listitem> <listitem> <simpara> A fost adÄugatÄ o preîntâmpinare la efectuarea operaÅ£iei modulus 0. </simpara> <simpara> Ãn versiunile anterioare ale PHP, efectuarea operaÅ£iei "integer % 0" nu emitea nici un mesaj de preîntâmpinare, întorcând, în loc, o valoare neaÅteptatÄ &false;. Ãncepând cu PHP 5.2.0 aceastÄ operaÅ£ie va emite un <constant>E_WARNING</constant>, dupÄ cum e cazul Åi în orice altÄ situaÅ£ie când se efectueazÄ Ã®mpÄrÅ£irea la zero. </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php print 10 % 0; /* Warning: Division by zero in filename on line n */ ?> ]]> </programlisting> </informalexample> </listitem> <listitem> <simpara> A fost modificat <function>__toString</function> pentru a fi apelat oricând este aplicabil. </simpara> <simpara> Metoda magicÄ <function>__toString</function> acum va fi apelatÄ Ã®n contextul unui string, adicÄ oriunde un obiect este utilizat ca string. </simpara> <simpara> SituaÅ£ia când se întoarce un string care conÅ£ine identificatorul obiectului a fost abandonatÄ Ã®n PHP 5.2.0. Aceasta devenise problematicÄ deoarece identificatorul obiectului nu poate fi considerat unic. AceastÄ schimbare va însemna cÄ aplicaÅ£ia dumneavoastrÄ este defectuoasÄ dacÄ v-aÅ£i bazat pe identificatorul obiectului în calitate de valoare întoarsÄ. Acum încercarea de a utiliza aceastÄ valoare în calitate de string va rezulta în emiterea unei erori fatale interceptabile. </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> Chiar Åi cu <function>__toString</function> obiectele nu pot fi utilizate ca indici ai masivului sau chei. S-ar putea sÄ adÄugÄm ulterior susÅ£inerea încorporatÄ a hash-urilor pentru aceasta, însÄ Ã®n PHP 5.2.x va trebui sau sÄ creaÅ£i propria funcÅ£ie hash, sau sÄ utilizaÅ£i noua funcÅ£ie SPL <function>spl_object_hash</function>. </simpara> <simpara> Din metodele <function>__toString</function> nu pot fi atuncate excepÅ£ii. </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> Au fost abandonate funcÅ£iile de clasÄ statice abstracte. </simpara> <simpara> Din cauza unei scÄpÄri, PHP 5.0.x Åi 5.1.x permiteau funcÅ£ii abstracte statice în clase. Ãncepând cu PHP 5.2.x, numai interfeÅ£ele le pot avea. </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> <link linkend="ref.oci8">Extensia Oracle</link> necesitÄ prezenÅ£a a cel puÅ£in Oracle 10 pe Windows. </simpara> </listitem> <listitem> <simpara> A fost adÄugatÄ susÅ£inerea RFC2397 (fluxurile <literal>data:</literal>). </simpara> <simpara> Introducerea schemei URL 'data' poate duce la o schimbare în comportament sub Windows. DacÄ lucraÅ£i cu un sistem de fiÅiere <acronym>NTFS</acronym> Åi utilizaÅ£i meta-fluxurile în aplicaÅ£ia dumneavoastrÄ, Åi dacÄ se întâmplÄ sÄ utlizaÅ£i un fiÅier cu denumirea 'data:', accesat fÄrÄ informaÅ£ia despre cale - aceasta nu va mai funcÅ£iona. Pentru a corecta aceasta, utilizaÅ£i protocolul 'file:' pentru a-l accesa. </simpara> <simpara> AccesaÅ£i de asemenea <link xlink:href="&url.rfc;2397">RFC 2397</link> </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> <listitem> <simpara> Regresul în Åabloanele <literal>glob()</literal> </simpara> <simpara> Ãn versiunea 5.2.4 o corectare a unei probleme de securitate cauza un regres al Åabloanelor de forma "/foo/*/bar/*". Ãncepând cu versiunea 5.2.5 în loc de a emite o preîntâmpinare, funcÅ£ia <literal>glob()</literal> va întoarce &false; când restricÅ£iile <literal>openbase_dir</literal> sunt încÄlcate. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.error-messages"> <title>Noile mesaje de eroare</title> <para> Mai jos sunt enumerate noile mesaje de eroare, care nu au fost discutate în alte secÅ£iuni din acest document. </para> <para> <example> <title>Ãn nucleul PHP</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">Cod-sursÄ obiect-orientat</link> în nucleul PHP</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>Ãn extensia <link linkend="ref.bzip2">bzip2</link></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>Ãn extensia <link linkend="ref.datetime">datetime</link></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>Ãn extensia <link linkend="ref.dbase">dBase</link></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>Ãn extensia <link linkend="ref.mcrypt">mcrypt</link></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>Ãn extensia <link linkend="ref.oci8">oci8</link></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>Ãn extensia <link linkend="ref.spl">SPL</link></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>Ãn extensia <link linkend="ref.sem">Semaphore</link> (sysvmsg)</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>Un exemplu <link linkend="ref.zip">Zip</link> 5.2.1+</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 xml:id="migration52.datetime"> <title>SchimbÄrile PHP în susÅ£inerea funcÅ£iilor <link linkend="ref.datetime">datetime</link></title> <para> Ãncepând cu PHP 5.1.0, exista o extensie denumitÄ <literal>date</literal> în nucleul PHP. Aceasta este noua implementare a susÅ£inerii în PHP a funcÅ£iilor datetime. Cu toate cÄ PHP va încerca sÄ ghiceascÄ setÄrile fusului orar ale sistemului, ar trebui sÄ stabiliÅ£i în mod manual fusul orar. PuteÅ£i realiza acest lucru prin oricare dintre urmÄtoarele trei metode: </para> <itemizedlist> <listitem> <simpara> în fiÅierul &php.ini; utilizând directiva INI <link linkend="ini.date.timezone">date.timezone</link> </simpara> </listitem> <listitem> <simpara> în sistemul de operare utilizând variabila de mediu <varname>TZ</varname> </simpara> </listitem> <listitem> <simpara> din script utilizând funcÅ£ia <link linkend="function.date-default-timezone-get"> <function>date_default_timezone_set</function></link> </simpara> </listitem> </itemizedlist> <para> Toate <link linkend="timezones">fusele orare</link> susÅ£inute sunt enumerate în manualul PHP. </para> <para> OdatÄ cu apariÅ£ia PHP 5.2.x, au apÄrut reprezentÄri-<type>obiect</type> ale datei Åi fuselor orare, denumite <literal>DateTime</literal> Åi <literal>DateTimeZone</literal> respectiv. Metodele apeleazÄ funcÅ£iile procedurale de date existente. </para> </section> <section xml:id="migration52.parameters"> <title>Parametri noi</title> <para> Unor funcÅ£ii li s-au dat parametri noi, opÅ£ionali, în PHP 5.2.x: </para> <para>Nucleul PHP:</para> <itemizedlist> <listitem> <simpara> <function>htmlentities</function> - s-a adÄugat <parameter>double_encode</parameter> în PHP 5.2.3. </simpara> </listitem> <listitem> <simpara> <function>htmlspecialchars</function> - s-a adÄugat <parameter>double_encode</parameter> în PHP 5.2.3. </simpara> </listitem> <listitem> <simpara> <function>base64_decode</function> - s-a adÄugat <parameter>strict</parameter> </simpara> </listitem> <listitem> <simpara> <function>setcookie</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>setrawcookie</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>session_set_cookie_params</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>memory_get_usage</function> - s-a adÄugat <parameter>real_usage</parameter> </simpara> </listitem> <listitem> <simpara> <function>get_loaded_extensions</function> - s-a adÄugat <parameter>zend_extensions</parameter> în PHP 5.2.4 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.curl">curl</link>:</para> <itemizedlist> <listitem> <simpara> <function>curl_multi_info_read</function> - s-a adÄugat <parameter>msgs_in_queue</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.datetime">datetime</link></para> <itemizedlist> <listitem> <simpara> <function>date</function> - s-a adÄugat caracterul de formatare "u" (milisecunde) în PHP 5.2.2 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.imap">imap</link>:</para> <itemizedlist> <listitem> <simpara> <function>imap_open</function> - s-a adÄugat <parameter>n_retries</parameter> </simpara> </listitem> <listitem> <simpara> <function>imap_reopen</function> - s-a adÄugat <parameter>n_retries</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.mbstring">mbstring</link>:</para> <itemizedlist> <listitem> <simpara> <function>mb_strrpos</function> - s-a adÄugat <parameter>offset</parameter> </simpara> <warning> <simpara> Parametrul <parameter>offset</parameter> a fost pus în poziÅ£ia unde se afla parametrul <parameter>encoding</parameter>. Compatibilitatea în sens invers a fost realizatÄ permiţând ca <parameter>encoding</parameter> sÄ fie specificat ca al treilea parametru. Utilizarea acestui mod de compatibilitate inversÄ nu e recomandat deoarece va fi eliminat într-o versiune ulterioarÄ a 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> - s-a adÄugat <parameter>skip</parameter> în PHP 5.2.1 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.openssl">openssl</link>:</para> <itemizedlist> <listitem> <simpara> <function>openssl_verify</function> - s-a adÄugat <parameter>signature_algo</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pgsql">pgsql</link>:</para> <itemizedlist> <listitem> <simpara> <function>pg_escape_bytea</function> - s-a adÄugat <parameter>connection</parameter> </simpara> </listitem> <listitem> <simpara> <function>pg_escape_string</function> - s-a adÄugat <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> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <link linkend="function.simplexml-element-attributes"><function>SimpleXMLElement::attributes</function></link> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <link linkend="function.simplexml-element-children"><function>SimpleXMLElement::children</function></link> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <function>simplexml_load_file</function> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <function>simplexml_load_string</function> - s-a adÄugat <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]) - s-a adÄugat <parameter>use_keys</parameter> în PHP 5.2.1 </simpara> </listitem> </itemizedlist> <para><link linkend="book.xmlreader">xmlreader</link>:</para> <itemizedlist> <listitem> <simpara> <function>XMLReader::open</function> - s-au adÄugat <parameter>encoding</parameter> Åi <parameter>options</parameter> </simpara> </listitem> <listitem> <simpara> <function>XMLReader::XML</function> - s-au adÄugat <parameter>encoding</parameter> Åi <parameter>options</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.xmlwriter">XMLWriter</link>:</para> <itemizedlist> <listitem> <simpara> <link linkend="function.xmlwriter-write-element"> <function>XMLWriter::WriteElement</function></link> - parametrul <parameter>content</parameter> a devenit opÅ£ional în PHP 5.2.3 </simpara> </listitem> <listitem> <simpara> <link linkend="function.xmlwriter-write-element-ns"> <function>XMLWriter::WriteElementNs</function></link> - parametrul <parameter>content</parameter> a devenit opÅ£ional în PHP 5.2.3 </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.functions"> <title>FuncÅ£ii noi</title> <para> Ãn PHP 5.2.x au fost introduse unele noi funcÅ£ii: </para> <para>Nucleul PHP:</para> <itemizedlist> <listitem> <simpara> <function>array_fill_keys</function> - CreeazÄ un masiv utilizând elementele primului parametru în calitate de chei, fiecare iniÅ£ializatÄ cu <literal>val</literal> </simpara> </listitem> <listitem> <simpara> <function>error_get_last</function> - Ãntoarce ultima eroare survenitÄ ca masiv asociativ. Ãntoarce &null; dacÄ Ã®ncÄ nu a survenit nici o eroare </simpara> </listitem> <listitem> <simpara> <function>image_type_to_extension</function> - Ãntoarce extensia fiÅierului pentru tipul-imagine întors de <function>getimagesize</function>, <function>exif_read_data</function>, <function>exif_thumbnail</function>, <function>exif_imagetype</function> </simpara> </listitem> <listitem> <simpara> <function>memory_get_peak_usage</function> - Ãntoarce maximul de memorie alocat de PHP </simpara> </listitem> <listitem> <simpara> <function>sys_get_temp_dir</function> - Ãntoarce calea directorului utilizat pentru fiÅiere temporare. (AdÄugat în 5.2.1) </simpara> </listitem> <listitem> <simpara> <function>timezone_abbreviations_list</function> - Ãntoarce un masiv asociativ conÅ£inând DST, deplasamentul Åi denumirea fusului orar </simpara> </listitem> <listitem> <simpara> <function>timezone_identifiers_list</function> - Ãntoarce un masiv numeric indexat cu toate identificatoarele fusurilor orare </simpara> </listitem> <listitem> <simpara> <function>timezone_name_from_abbr</function> - Ãntoarce denumirea fusului orar din abreviere </simpara> </listitem> <listitem> <simpara> <function>stream_socket_shutdown</function> - CauzeazÄ deconectarea totalÄ sau parÅ£ialÄ a unei conexiuni full-duplex realizatÄ prin intermediul unui socket asociat cu un flux. Ãncepând cu PHP 5.2.1. </simpara> </listitem> </itemizedlist> <para><link linkend="ref.image">Imagini</link>:</para> <itemizedlist> <listitem> <simpara> <function>imagegrabscreen</function> - IntercepteazÄ imaginea întregului ecran. Ãncepând cu PHP 5.2.2. </simpara> </listitem> <listitem> <simpara> <function>imagegrabwindow</function> - CaptureazÄ o fereastrÄ. Ãncepând cu PHP 5.2.2. </simpara> </listitem> </itemizedlist> <para><link linkend="ref.mbstring">mbstring</link>:</para> <itemizedlist> <!-- FIXME: Apparently these two never made it into a release see bug#41070 <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> - GÄseÅte poziÅ£ia primei apariÅ£ii a unui string în cadrul altuia, fÄrÄ a lua în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_stristr</function> - GÄseÅte prima apariÅ£ie a unui string în cadrul altuia, luând în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strrchr</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string </simpara> </listitem> <listitem> <simpara> <function>mb_strrichr</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string, luând în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strripos</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string, fÄrÄ a lua în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strstr</function> - GÄseÅte prima apariÅ£ie a unui string în cadrul altuia </simpara> </listitem> </itemizedlist> <para><link linkend="ref.ming">ming</link> (Ãncepând cu PHP 5.2.1):</para> <itemizedlist> <listitem> <simpara> void ming_setSWFCompression(int num) - StabileÅte compresia ieÅirii </simpara> </listitem> <listitem> <simpara> void swfmovie::namedanchor(string name) - CreazÄ o ancorÄ </simpara> </listitem> <listitem> <simpara> void swfmovie::protect([string pasword]) - ProtejeazÄ </simpara> </listitem> </itemizedlist> <para><link linkend="ref.openssl">openssl</link>:</para> <itemizedlist> <listitem> <simpara> <function>openssl_csr_get_public_key</function> - Extrage cheia publicÄ dintr-un CERT Åi o pregÄteÅte pentru utilizare </simpara> </listitem> <listitem> <simpara> <function>openssl_csr_get_subject</function> - Ãntoarce subiectul unui CERT </simpara> </listitem> <listitem> <simpara> <function>openssl_pkey_get_details</function> - Ãntoarce un masiv cu detaliile cheii (biÅ£ii, pkey, tipul) </simpara> </listitem> </itemizedlist> <para><link linkend="ref.spl">spl</link>:</para> <itemizedlist> <listitem> <simpara> <function>spl_object_hash</function> - Ãntoarce id-ul hash-ului pentru un obiect dat </simpara> </listitem> <listitem> <simpara> int iterator_apply(Traversable it, mixed function [, mixed params]) - ApeleazÄ o funcÅ£ie pentru fiecare element într-un iterator </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pcre">pcre</link>:</para> <itemizedlist> <listitem> <simpara> <function>preg_last_error</function> - Ãntoarce codul erorii a ultimei execuÅ£ii regex </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pgsql">pgsql</link>:</para> <itemizedlist> <listitem> <simpara> <function>pg_field_table</function> - Ãntoarce denumirea tabelei cÄreia îi aparÅ£ine câmpul, sau oid-ul tabelei dacÄ <literal>oid_only</literal> este &true; </simpara> </listitem> </itemizedlist> <para><link linkend="ref.posix">posix</link>:</para> <itemizedlist> <listitem> <simpara> <function>posix_initgroups</function> - CalculeazÄ lista de acces a grupului pentru utilizatorul specificat în denumire </simpara> </listitem> </itemizedlist> <para><link linkend="ref.gmp">gmp</link>:</para> <itemizedlist> <listitem> <simpara> <function>gmp_nextprime</function> - CalculeazÄ urmÄtorul numÄr prim </simpara> </listitem> </itemizedlist> <para><link linkend="ref.xmlwriter">xmlwriter</link>:</para> <itemizedlist> <listitem> <simpara> <function>xmlwriter_full_end_element</function> - FinalizeazÄ elementul curent - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_write_raw</function> - Ãnscrie textul - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_start_dtd_entity</function> - CreazÄ o entitate DTD de start - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_end_dtd_entity</function> - FinalizeazÄ entitatea DTD curentÄ - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_write_dtd_entity</function> - Ãnscrie eticheta entitÄÅ£ii DTD depline - întoarce &false; la eroare </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.methods"> <title>Metode noi</title> <para> Ãn 5.2.0 au fost introduse metode noi: </para> <para><link linkend="book.dom">dom</link>:</para> <itemizedlist> <listitem> <simpara> <function>DOMDocument::registerNodeClass</function> - ÃnregistreazÄ clasa extinsÄ utilizatÄ pentru a crea tipul de bazÄ al nodului </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttribute</function> - DeclarÄ atributul specificat dupÄ denumire pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttributeNode</function> - DeclarÄ atributul specificat dupÄ nod pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttributeNS</function> - DeclarÄ atributul specificat dupÄ numele local Åi spaÅ£iul de nume URI pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> DOMNode::C14N([bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - EfectueazÄ transformarea canonicÄ a nodurilor într-un string </simpara> </listitem> <listitem> <simpara> DOMNode::C14NFile(string uri [, bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - EfectueazÄ transformarea canonicÄ a nodurilor într-un fiÅier </simpara> </listitem> <listitem> <simpara> DOMNode::getNodePath() - ObÅ£ine un <literal>xpath</literal> pentru un nod </simpara> </listitem> </itemizedlist> <para><link linkend="ref.soap">soap</link>:</para> <itemizedlist> <listitem> <simpara> SoapServer::setObject(object obj) - StabileÅte obiectul care va gestiona interpelÄrile SOAP </simpara> </listitem> </itemizedlist> <para><link linkend="ref.spl">spl</link>:</para> <itemizedlist> <listitem> <simpara> int ArrayObject::asort(void) - SorteazÄ Ã®nregistrÄrile dupÄ valori </simpara> </listitem> <listitem> <simpara> int ArrayObject::ksort(void) - SorteazÄ Ã®nregistrÄrile dupÄ cheie </simpara> </listitem> <listitem> <simpara> int ArrayObject::natcasesort(void) - SorteazÄ Ã®nregistrÄrile dupÄ cheie utilizând algoritmul "ordinii naturale", ce nu diferenÅ£iazÄ caracterele minuscule / majuscule. </simpara> </listitem> <listitem> <simpara> int ArrayObject::natsort(void) - SorteazÄ Ã®nregistrÄrile dupÄ valori utilizând algoritmul "ordinii naturale". </simpara> </listitem> <listitem> <simpara> int ArrayObject::uasort(callback cmp_function) - SorteazÄ Ã®nregistrÄrile dupÄ valori utilizând o funcÅ£ie definitÄ de utilizator </simpara> </listitem> <listitem> <simpara> int ArrayObject::uksort(callback cmp_function) - SorteazÄ Ã®nregistrÄrile dupÄ cheie utilizând o funcÅ£ie definitÄ de utilizator </simpara> </listitem> <listitem> <simpara> ArrayIterator AppendIterator::getArrayIterator() - ObÅ£ine acces la <literal>ArrayIterator</literal> intern </simpara> </listitem> <listitem> <simpara> int AppendIterator::getIteratorIndex() - ObÅ£ine indicele iteratorului </simpara> </listitem> <listitem> <simpara> bool CachingIterator::getCache() - Ãntoarce cache-ul </simpara> </listitem> <listitem> <simpara> int CachingIterator::getFlags() - Ãntoarce fanioanele interne </simpara> </listitem> <listitem> <simpara> bool CachingIterator::offsetExists(mixed index) - Ãntoarce &true; dacÄ indicele cerut existÄ </simpara> </listitem> <listitem> <simpara> string CachingIterator::offsetGet(mixed index) - Ãntoarce cache-ul intern dacÄ este utilizat </simpara> </listitem> <listitem> <simpara> void CachingIterator::offsetSet(mixed index, mixed newval) - StabileÅte indicele dat în cache </simpara> </listitem> <listitem> <simpara> void CachingIterator::offsetUnset(mixed index) - EliminÄ indicele dat din cache </simpara> </listitem> <listitem> <simpara> void CachingIterator::setFlags() - StabileÅte fanioanele interne </simpara> </listitem> <listitem> <simpara> array("delimiter" =>, "enclosure" =>) SplFileObject::getCsvControl(void) - ObÅ£ine caracterele de delimitare Åi încapsulare utilizate în <function>fgetcsv</function> </simpara> </listitem> <listitem> <simpara> void SplFileObject::setCsvControl([string delimiter = ',' [, string enclosure = '"']]) - StabileÅte caracterele de delimitare Åi încapsulare utilizate în <function>fgetcsv</function> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.tidy">Tidy</link></para> <itemizedlist> <listitem> <simpara> tidyNode <link linkend="function.tidynode-getparent">tidyNode::getParent(void)</link> - Ãntoarce nodul-pÄrinte al nodului curent (adÄugat în PHP 5.2.2) </simpara> </listitem> </itemizedlist> <para><link linkend="book.xmlreader">XMLReader</link></para> <itemizedlist> <listitem> <simpara> boolean XMLReader::setSchema(string filename) - UtilizeazÄ schema W3C XSD pentru a valida documentul în timp ce este procesat. Activarea este posibilÄ numai înainte de primul <literal>Read()</literal> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.zip">zip</link>:</para> <itemizedlist> <listitem> <simpara> <link linkend="function.ziparchive-addemptydir">ZipArchive::addEmptyDir()</link> - CreeazÄ un director vid în arhivÄ </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.removed-extensions"> <title>Extensiile eliminate</title> <para> Aceste extensii au fost transferate în PECL Åi nu mai fac parte din distributivul PHP. Versiunile-pachete PECL ale acestor extensii vor fi create conform cerinÅ£elor utilizatorilor. </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 xml:id="migration52.new-extensions"> <title>Extensii noi</title> <para> UrmÄtoarele sunt extensii noi adÄugate (implicit) începând cu PHP 5.2.0: </para> <itemizedlist> <listitem> <simpara> <link linkend="ref.filter">Filtru</link> - valideazÄ Åi filtreazÄ datele Åi este proiectat pentru a fi utilizat cu date nesecurizate, cum ar fi cele introduse de utilizator. AceastÄ extensie este activatÄ implicit; modul implicit RAW nu ar vre-un impact asupra datelor introduse. </simpara> </listitem> <listitem> <simpara> <link linkend="ref.json">JSON</link> - implementeazÄ formatul de schimb al datelor JavaScript Object Notation (JSON) — Notarea Obiectelor în JavaScript. AceastÄ extensie este activatÄ implicit. </simpara> </listitem> <listitem> <simpara> <link linkend="ref.zip">Zip</link> - vÄ permite sÄ Ã®nscrieÅ£i Åi sÄ citiÅ£i în mod transparent arhive comprimate ZIP Åi fiÅierele din interiorul lor. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.classes"> <title>Clase noi</title> <para> UrmÄtoarele clase au fost introduse în 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 - extinde <classname>FilterIterator</classname>; implementeazÄ <classname>Iterator</classname>, <classname>Traversable</classname>, <classname>OuterIterator</classname> </simpara> <simpara> Constante: </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> ProprietÄÅ£i: </simpara> <itemizedlist> <listitem> <simpara> public <property>replacement</property> </simpara> </listitem> </itemizedlist> <simpara> Metode: </simpara> <itemizedlist> <listitem> <simpara> RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - CreeazÄ un <literal>RegexIterator</literal> dintr-un alt iterator Åi o expresie regularÄ </simpara> </listitem> <listitem> <simpara> bool RegexIterator::accept() - PotriveÅte (string)current() conform expresiei regulare </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getFlags() - Ãntoarce fanioanele operaÅ£ionale curente </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getMode() - Ãntoarce modul operaÅ£ional curent </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getPregFlags() - Ãntoarce fanioanele PREG curente (dacÄ se utilizeazÄ) sau &null; </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setFlags(int new_flags) - StabileÅte fanioanele operaÅ£ionale </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setMode(int new_mode) - StabileÅte noul mod operaÅ£ional </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setPregFlags(int new_flags) - StabileÅte fanioanele PREG </simpara> </listitem> </itemizedlist> </listitem> <listitem> <simpara> RecursiveRegexIterator </simpara> <simpara> Constante: </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> Metode: </simpara> <itemizedlist> <listitem> <simpara> RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - CreeazÄ un <literal>RecursiveRegexIterator</literal> dintr-un alt iterator recursiv Åi o expresie regularÄ </simpara> </listitem> <listitem> <simpara> RecursiveRegexIterator RecursiveRegexIterator::getChildren() - Ãntoarce fiii iteratorului intern, ce se conÅ£in într-un <literal>RecursiveRegexIterator</literal> </simpara> </listitem> <listitem> <simpara> bool RecursiveRegexIterator::hasChildren() - VerificÄ dacÄ elementul curent al iteratorului intern posedÄ fii </simpara> </listitem> </itemizedlist> </listitem> </itemizedlist> </section> <section xml:id="migration52.global-constants"> <title>Constante globale noi</title> <para>Nucleul PHP:</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> <listitem> <simpara> <constant>CURLOPT_TCP_NODELAY</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <constant>CURLOPT_TIMEOUT_MS</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.3 </simpara> </listitem> <listitem> <simpara> <constant>CURLOPT_CONNECTTIMEOUT_MS</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.3 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.gmp">GMP</link>:</para> <itemizedlist> <listitem> <simpara> <constant>GMP_VERSION</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.2. </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 xml:id="migration52.class-constants"> <title>Constante de clase noi</title> <para><link linkend="intro.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> <listitem> <simpara> <constant>PDO::FETCH_KEY_PAIR</constant> </simpara> <simpara> TransleazÄ un set de rezultate în 2 coloane într-un masiv asociativ. (AdÄugatÄ Ã®n PHP 5.2.3) </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 xml:id="migration52.newconf"> <title>Noile directive de configurare INI</title> <para> Noi directive ale &php.ini; au fost introduse în PHP 5.2.0: </para> <itemizedlist> <listitem> <simpara> <link linkend="ini.allow-url-include">allow_url_include</link> </simpara> <simpara> AceastÄ opÅ£iune utilÄ face posibilÄ diferenÅ£ierea dintre operaÅ£iunile standarde asupra fiÅierelor la distanÅ£Ä Åi includerea fiÅierelor la distanÅ£Ä. Ãn timp ce prima este de obicei dezirabilÄ, ultima poate fi un risc de securitate dacÄ este utilizatÄ naiv. Ãncepând cu PHP 5.2.0 puteÅ£i permite efectuarea operaÅ£iunilor asupra fiÅierelor la distanÅ£Ä, interzicând totodatÄ includerea fiÅierelor la distanÅ£Ä Ã®n script-urile locale. De fapt, aceasta este configuraÅ£ia implicitÄ. </simpara> </listitem> <listitem> <simpara> <link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link> </simpara> <simpara> Limita de backtracking a PCRE. </simpara> </listitem> <listitem> <simpara> <link linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link> </simpara> <simpara> Limita de recursie a PCRE. ObservaÅ£i cÄ dacÄ stabiliÅ£i aceastÄ valoare prea mare, puteÅ£i sÄ consumaÅ£i toatÄ stiva disponibilÄ a procesului Åi eventual sÄ suspendaÅ£i PHP (din cauza atingerii limitei dimensiunii stivei, impusÄ de sistemul de operare). </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.cookie-httponly">session.cookie_httponly</link> </simpara> <simpara> MarcheazÄ prÄjiturile ca fiind accesibile numai prin intermediul protocolului HTTP. Aceasta înseamnÄ cÄ prÄjitura nu va fi accesibilÄ prin intermediul limbajelor de scriptare, cum ar fi JavaScript. AceastÄ opÅ£iune poate efectiv ajuta la reducerea furtului de identitate prin atacuri XSS (cu toate cÄ aceasta nu este susÅ£inut de toate navigatoarele). </simpara> </listitem> </itemizedlist> <para> Directive noi în PHP 5.2.2: </para> <itemizedlist> <listitem> <simpara> <link linkend="ini.max-input-nesting-level">max_input_nesting_level</link> </simpara> <simpara> LimiteazÄ adâncimea încorporÄrii <link linkend="language.variables.external">variabilelor de intrare</link>, implicit este 64. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.errorrep"> <title>Raportarea erorilor</title> <para> Unele din condiÅ£iile <constant>E_ERROR</constant> existente au fost convertite în ceva ce poate fi interceptat cu ajutorul unui handler de erori definit de utilizator. DacÄ o <link linkend="errorfunc.constants"><constant>E_RECOVERABLE_ERROR</constant></link> nu este interceptatÄ, ea se va comporta la fel ca Åi <constant>E_ERROR</constant> în toate versiunile PHP. Erorile de acest tip sunt înscrise în jurnal ca <literal>Eroare fatalÄ interceptabilÄ</literal>. </para> <para> AceastÄ schimbare înseamnÄ cÄ valoarea <constant>E_ALL</constant> a constantei <link linkend="ini.error-reporting">error_reporting</link> este acum 6143, în timp ce valoarea precedentÄ era 2047. Deoarece constantele PHP nu au nici o însemnÄtate în afara PHP, în unele cazuri este utilizatÄ valoarea întreagÄ, de aceea ea va trebui ajustatÄ. Deci, spre exemplu, stabilind modul <literal>error_reporting</literal> în fiÅierele <link linkend="apache.configuration">httpd.conf</link> sau <filename>.htaccess</filename>, valoarea trebuie schimbatÄ corespunzÄtor. AcelaÅi lucru este valabil atunci când valorile numerice sunt utilizate în locul constantelor în script-urile PHP. </para> <para> Ca efect secundar a unei schimbÄri efectuate pentru a preveni dublarea mesajelor de eroare atunci când <link linkend="ini.track-errors">track_errors</link> este <literal>On</literal>, acum este necesar de a întoarce &false; din handler-ele de erori definite de utilizator pentru a popula <link linkend="reserved.variables.phperrormsg">$php_errormsg</link>. Aceasta oferÄ un control granular asupra nivelelor mesajelor stocate. </para> </section> <section xml:id="migration52.other"> <title>Alte îmbunÄtÄÅ£iri</title> <itemizedlist> <listitem> <simpara> Managerul îmbunÄtÄÅ£it al memoriei Åi limita implicitÄ mÄritÄ a memoriei. </simpara> <simpara> Noul manager al memoriei alocÄ mai puÅ£inÄ memorie Åi lucreazÄ mai rapid decât încarnarea precedentÄ. El alocÄ memorie din sistem în blocuri largi Åi apoi gestioneazÄ grÄmada (heap) independent. Valoarea <literal>memory_limit</literal> din &php.ini; este verificatÄ nu la fiecare apel <literal>emalloc()</literal> (ca înainte), dar pentru blocurile de facto cerute de la sistem. Aceasta înseamnÄ cÄ <literal>memory_limit</literal> este mult mai exact decât era, deoarece vechiul manager al memoriei nu calcula tot necesarul de memorie utilizat de biblioteca <literal>malloc</literal>. </simpara> <simpara> DatoritÄ acestei precizii obÅ£inute utilizarea memoriei poate pÄrea sÄ se fi mÄrit, cu toate cÄ, de fapt, nu este aÅa. Pentru a acomoda aceastÄ mÄrire aparentÄ, valoarea implicitÄ a <literal>memory_limit</literal> de asemenea a fost mÄritÄ - de la 8 la 16 megaocteÅ£i. </simpara> </listitem> <listitem> <simpara> S-a adÄugat susÅ£inerea constructorilor în interfeÅ£e pentru a forÅ£a verificarea semnÄturilor constructorilor în implementÄri. </simpara> <simpara> Ãncepând cu PHP 5.2.0, interfeÅ£ele pot avea constructori. ÃnsÄ dacÄ alegeÅ£i sÄ declaraÅ£i un constructor într-o interfaÅ£Ä, fiecare clasÄ ce va implementa aceastÄ interfaÅ£Ä TREBUIE sÄ includÄ un constructor cu o semnÄturÄ identicÄ cu acea a constructorului din interfaÅ£a de bazÄ. Prin 'semnÄturÄ' se înÅ£eleg definiÅ£iile tipurilor parametrilor Åi a valorii întoarse, inclusiv orice fel de indicatori expliciÅ£i ai tipurilor Åi faptul dacÄ datele sunt transmise prin referinÅ£Ä, sau prin valoare. </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 -->
http://cvs.php.net/viewvc.cgi/phpdoc-ro/appendices/migration52.xml?view=markup&rev=1.1 Index: phpdoc-ro/appendices/migration52.xml +++ phpdoc-ro/appendices/migration52.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <!-- EN-Revision: 1.34 Maintainer: simionea Status: translated --> <appendix xml:id="migration52" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title>Migrarea de la PHP 5.1.x la PHP 5.2.x</title> <section xml:id="migration52.changes"> <title>Ce s-a schimbat în PHP 5.2.x</title> <para> Majoritatea îmbunÄtÄÅ£irilor din PHP 5.2.x nu au nici un impact asupra codului-sursÄ existent. Sunt însÄ unele <link linkend="migration52.incompatible">mici incompatibilitÄÅ£i</link> Åi <link linkend="migration52.error-messages">noi mesaje de eroare</link> care trebuie luate în considerare, iar codul-sursÄ trebuie testat înainte de a schimba versiunile PHP în mediile de producÅ£ie. </para> <para> DacÄ sistemul este schimbat de la PHP 5.0.x, este necesar de citit Åi secÅ£iunea manualului întitulatÄ <link linkend="migration51">Note la reînnoirea pânÄ la PHP 5.1.x</link>. </para> <para> Similar, dacÄ sistemul este schimbat de la PHP 4, trebuie cititÄ Åi secÅ£iunea manualului întitulatÄ <link linkend="migration5">Migrarea de la PHP 4 la PHP 5</link>. </para> </section> <section xml:id="migration52.incompatible"> <title>SchimbÄri incompatibile în sens invers</title> <para> Cu toate cÄ codul-sursÄ existent în PHP 5 trebuie sÄ funcÅ£ioneze fÄrÄ schimbÄri, ar trebui sÄ atrageÅ£i atenÅ£ia la urmÄtoarele schimbÄri incompatibile în sens invers: </para> <itemizedlist> <listitem> <simpara> <function>getrusage</function> întoarce &null; când îi sunt transmise argumente incompatibile începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <link linkend="function.ziparchive-setCommentName"> <function>ZipArchive::setCommentName</function></link> întoarce &true; în caz de succes începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <link linkend="function.ziparchive-setcommentindex"> <function>ZipArchive::setCommentIndex</function></link> întoarce &true; în caz de succes începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <function>SplFileObject::getFilename</function> întoarce denumirea fiÅierului, Åi nu calea/relativÄ/spre/fiÅier, începând cu PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> S-a modificat prioritatea variabilei de mediu <varname>PHPRC</varname> pe sistemele Win32. </simpara> <simpara> Variabila de mediu <varname>PHPRC</varname> acum are prioritate faÅ£Ä de calea stocatÄ Ã®n registrul Windows. </simpara> </listitem> <listitem> <simpara> CLI SAPI nu mai cautÄ fiÅierele &php.ini; sau <filename>php-cli.ini</filename> în directorul curent. </simpara> <simpara> Ãn PHP 5.1.x a fost introdusÄ o facilitate nedocumentatÄ care fÄcea ca binarul CLI sÄ caute în Directorul de Lucru Curent (DLC) un fiÅier de configurare PHP, ducând potenÅ£ial la un comportament imprevizibil atunci când era citit un fiÅier de configurare neaÅteptat. AceastÄ funcÅ£ionalitate a fost eliminatÄ Ã®n versiunea 5.2.0, Åi PHP nu mai cautÄ Ã®n DLC fiÅierele &php.ini; sau <filename>php-cli.ini</filename>. AccesaÅ£i de asemenea secÅ£iunea manualului referitoare la <link linkend="features.commandline">linia de comandÄ</link>. </simpara> </listitem> <listitem> <simpara> A fost adÄugatÄ o preîntâmpinare la efectuarea operaÅ£iei modulus 0. </simpara> <simpara> Ãn versiunile anterioare ale PHP, efectuarea operaÅ£iei "integer % 0" nu emitea nici un mesaj de preîntâmpinare, întorcând, în loc, o valoare neaÅteptatÄ &false;. Ãncepând cu PHP 5.2.0 aceastÄ operaÅ£ie va emite un <constant>E_WARNING</constant>, dupÄ cum e cazul Åi în orice altÄ situaÅ£ie când se efectueazÄ Ã®mpÄrÅ£irea la zero. </simpara> <informalexample> <programlisting role="php"> <![CDATA[ <?php print 10 % 0; /* Warning: Division by zero in filename on line n */ ?> ]]> </programlisting> </informalexample> </listitem> <listitem> <simpara> A fost modificat <function>__toString</function> pentru a fi apelat oricând este aplicabil. </simpara> <simpara> Metoda magicÄ <function>__toString</function> acum va fi apelatÄ Ã®n contextul unui string, adicÄ oriunde un obiect este utilizat ca string. </simpara> <simpara> SituaÅ£ia când se întoarce un string care conÅ£ine identificatorul obiectului a fost abandonatÄ Ã®n PHP 5.2.0. Aceasta devenise problematicÄ deoarece identificatorul obiectului nu poate fi considerat unic. AceastÄ schimbare va însemna cÄ aplicaÅ£ia dumneavoastrÄ este defectuoasÄ dacÄ v-aÅ£i bazat pe identificatorul obiectului în calitate de valoare întoarsÄ. Acum încercarea de a utiliza aceastÄ valoare în calitate de string va rezulta în emiterea unei erori fatale interceptabile. </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> Chiar Åi cu <function>__toString</function> obiectele nu pot fi utilizate ca indici ai masivului sau chei. S-ar putea sÄ adÄugÄm ulterior susÅ£inerea încorporatÄ a hash-urilor pentru aceasta, însÄ Ã®n PHP 5.2.x va trebui sau sÄ creaÅ£i propria funcÅ£ie hash, sau sÄ utilizaÅ£i noua funcÅ£ie SPL <function>spl_object_hash</function>. </simpara> <simpara> Din metodele <function>__toString</function> nu pot fi atuncate excepÅ£ii. </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> Au fost abandonate funcÅ£iile de clasÄ statice abstracte. </simpara> <simpara> Din cauza unei scÄpÄri, PHP 5.0.x Åi 5.1.x permiteau funcÅ£ii abstracte statice în clase. Ãncepând cu PHP 5.2.x, numai interfeÅ£ele le pot avea. </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> <link linkend="ref.oci8">Extensia Oracle</link> necesitÄ prezenÅ£a a cel puÅ£in Oracle 10 pe Windows. </simpara> </listitem> <listitem> <simpara> A fost adÄugatÄ susÅ£inerea RFC2397 (fluxurile <literal>data:</literal>). </simpara> <simpara> Introducerea schemei URL 'data' poate duce la o schimbare în comportament sub Windows. DacÄ lucraÅ£i cu un sistem de fiÅiere <acronym>NTFS</acronym> Åi utilizaÅ£i meta-fluxurile în aplicaÅ£ia dumneavoastrÄ, Åi dacÄ se întâmplÄ sÄ utlizaÅ£i un fiÅier cu denumirea 'data:', accesat fÄrÄ informaÅ£ia despre cale - aceasta nu va mai funcÅ£iona. Pentru a corecta aceasta, utilizaÅ£i protocolul 'file:' pentru a-l accesa. </simpara> <simpara> AccesaÅ£i de asemenea <link xlink:href="&url.rfc;2397">RFC 2397</link> </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> <listitem> <simpara> Regresul în Åabloanele <literal>glob()</literal> </simpara> <simpara> Ãn versiunea 5.2.4 o corectare a unei probleme de securitate cauza un regres al Åabloanelor de forma "/foo/*/bar/*". Ãncepând cu versiunea 5.2.5 în loc de a emite o preîntâmpinare, funcÅ£ia <literal>glob()</literal> va întoarce &false; când restricÅ£iile <literal>openbase_dir</literal> sunt încÄlcate. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.error-messages"> <title>Noile mesaje de eroare</title> <para> Mai jos sunt enumerate noile mesaje de eroare, care nu au fost discutate în alte secÅ£iuni din acest document. </para> <para> <example> <title>Ãn nucleul PHP</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">Cod-sursÄ obiect-orientat</link> în nucleul PHP</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>Ãn extensia <link linkend="ref.bzip2">bzip2</link></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>Ãn extensia <link linkend="ref.datetime">datetime</link></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>Ãn extensia <link linkend="ref.dbase">dBase</link></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>Ãn extensia <link linkend="ref.mcrypt">mcrypt</link></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>Ãn extensia <link linkend="ref.oci8">oci8</link></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>Ãn extensia <link linkend="ref.spl">SPL</link></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>Ãn extensia <link linkend="ref.sem">Semaphore</link> (sysvmsg)</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>Un exemplu <link linkend="ref.zip">Zip</link> 5.2.1+</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 xml:id="migration52.datetime"> <title>SchimbÄrile PHP în susÅ£inerea funcÅ£iilor <link linkend="ref.datetime">datetime</link></title> <para> Ãncepând cu PHP 5.1.0, exista o extensie denumitÄ <literal>date</literal> în nucleul PHP. Aceasta este noua implementare a susÅ£inerii în PHP a funcÅ£iilor datetime. Cu toate cÄ PHP va încerca sÄ ghiceascÄ setÄrile fusului orar ale sistemului, ar trebui sÄ stabiliÅ£i în mod manual fusul orar. PuteÅ£i realiza acest lucru prin oricare dintre urmÄtoarele trei metode: </para> <itemizedlist> <listitem> <simpara> în fiÅierul &php.ini; utilizând directiva INI <link linkend="ini.date.timezone">date.timezone</link> </simpara> </listitem> <listitem> <simpara> în sistemul de operare utilizând variabila de mediu <varname>TZ</varname> </simpara> </listitem> <listitem> <simpara> din script utilizând funcÅ£ia <link linkend="function.date-default-timezone-get"> <function>date_default_timezone_set</function></link> </simpara> </listitem> </itemizedlist> <para> Toate <link linkend="timezones">fusele orare</link> susÅ£inute sunt enumerate în manualul PHP. </para> <para> OdatÄ cu apariÅ£ia PHP 5.2.x, au apÄrut reprezentÄri-<type>obiect</type> ale datei Åi fuselor orare, denumite <literal>DateTime</literal> Åi <literal>DateTimeZone</literal> respectiv. Metodele apeleazÄ funcÅ£iile procedurale de date existente. </para> </section> <section xml:id="migration52.parameters"> <title>Parametri noi</title> <para> Unor funcÅ£ii li s-au dat parametri noi, opÅ£ionali, în PHP 5.2.x: </para> <para>Nucleul PHP:</para> <itemizedlist> <listitem> <simpara> <function>htmlentities</function> - s-a adÄugat <parameter>double_encode</parameter> în PHP 5.2.3. </simpara> </listitem> <listitem> <simpara> <function>htmlspecialchars</function> - s-a adÄugat <parameter>double_encode</parameter> în PHP 5.2.3. </simpara> </listitem> <listitem> <simpara> <function>base64_decode</function> - s-a adÄugat <parameter>strict</parameter> </simpara> </listitem> <listitem> <simpara> <function>setcookie</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>setrawcookie</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>session_set_cookie_params</function> - s-a adÄugat <parameter>httponly</parameter> </simpara> </listitem> <listitem> <simpara> <function>memory_get_usage</function> - s-a adÄugat <parameter>real_usage</parameter> </simpara> </listitem> <listitem> <simpara> <function>get_loaded_extensions</function> - s-a adÄugat <parameter>zend_extensions</parameter> în PHP 5.2.4 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.curl">curl</link>:</para> <itemizedlist> <listitem> <simpara> <function>curl_multi_info_read</function> - s-a adÄugat <parameter>msgs_in_queue</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.datetime">datetime</link></para> <itemizedlist> <listitem> <simpara> <function>date</function> - s-a adÄugat caracterul de formatare "u" (milisecunde) în PHP 5.2.2 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.imap">imap</link>:</para> <itemizedlist> <listitem> <simpara> <function>imap_open</function> - s-a adÄugat <parameter>n_retries</parameter> </simpara> </listitem> <listitem> <simpara> <function>imap_reopen</function> - s-a adÄugat <parameter>n_retries</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.mbstring">mbstring</link>:</para> <itemizedlist> <listitem> <simpara> <function>mb_strrpos</function> - s-a adÄugat <parameter>offset</parameter> </simpara> <warning> <simpara> Parametrul <parameter>offset</parameter> a fost pus în poziÅ£ia unde se afla parametrul <parameter>encoding</parameter>. Compatibilitatea în sens invers a fost realizatÄ permiţând ca <parameter>encoding</parameter> sÄ fie specificat ca al treilea parametru. Utilizarea acestui mod de compatibilitate inversÄ nu e recomandat deoarece va fi eliminat într-o versiune ulterioarÄ a 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> - s-a adÄugat <parameter>skip</parameter> în PHP 5.2.1 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.openssl">openssl</link>:</para> <itemizedlist> <listitem> <simpara> <function>openssl_verify</function> - s-a adÄugat <parameter>signature_algo</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pgsql">pgsql</link>:</para> <itemizedlist> <listitem> <simpara> <function>pg_escape_bytea</function> - s-a adÄugat <parameter>connection</parameter> </simpara> </listitem> <listitem> <simpara> <function>pg_escape_string</function> - s-a adÄugat <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> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <link linkend="function.simplexml-element-attributes"><function>SimpleXMLElement::attributes</function></link> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <link linkend="function.simplexml-element-children"><function>SimpleXMLElement::children</function></link> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <function>simplexml_load_file</function> - s-a adÄugat <parameter>is_prefix</parameter> </simpara> </listitem> <listitem> <simpara> <function>simplexml_load_string</function> - s-a adÄugat <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]) - s-a adÄugat <parameter>use_keys</parameter> în PHP 5.2.1 </simpara> </listitem> </itemizedlist> <para><link linkend="book.xmlreader">xmlreader</link>:</para> <itemizedlist> <listitem> <simpara> <function>XMLReader::open</function> - s-au adÄugat <parameter>encoding</parameter> Åi <parameter>options</parameter> </simpara> </listitem> <listitem> <simpara> <function>XMLReader::XML</function> - s-au adÄugat <parameter>encoding</parameter> Åi <parameter>options</parameter> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.xmlwriter">XMLWriter</link>:</para> <itemizedlist> <listitem> <simpara> <link linkend="function.xmlwriter-write-element"> <function>XMLWriter::WriteElement</function></link> - parametrul <parameter>content</parameter> a devenit opÅ£ional în PHP 5.2.3 </simpara> </listitem> <listitem> <simpara> <link linkend="function.xmlwriter-write-element-ns"> <function>XMLWriter::WriteElementNs</function></link> - parametrul <parameter>content</parameter> a devenit opÅ£ional în PHP 5.2.3 </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.functions"> <title>FuncÅ£ii noi</title> <para> Ãn PHP 5.2.x au fost introduse unele noi funcÅ£ii: </para> <para>Nucleul PHP:</para> <itemizedlist> <listitem> <simpara> <function>array_fill_keys</function> - CreeazÄ un masiv utilizând elementele primului parametru în calitate de chei, fiecare iniÅ£ializatÄ cu <literal>val</literal> </simpara> </listitem> <listitem> <simpara> <function>error_get_last</function> - Ãntoarce ultima eroare survenitÄ ca masiv asociativ. Ãntoarce &null; dacÄ Ã®ncÄ nu a survenit nici o eroare </simpara> </listitem> <listitem> <simpara> <function>image_type_to_extension</function> - Ãntoarce extensia fiÅierului pentru tipul-imagine întors de <function>getimagesize</function>, <function>exif_read_data</function>, <function>exif_thumbnail</function>, <function>exif_imagetype</function> </simpara> </listitem> <listitem> <simpara> <function>memory_get_peak_usage</function> - Ãntoarce maximul de memorie alocat de PHP </simpara> </listitem> <listitem> <simpara> <function>sys_get_temp_dir</function> - Ãntoarce calea directorului utilizat pentru fiÅiere temporare. (AdÄugat în 5.2.1) </simpara> </listitem> <listitem> <simpara> <function>timezone_abbreviations_list</function> - Ãntoarce un masiv asociativ conÅ£inând DST, deplasamentul Åi denumirea fusului orar </simpara> </listitem> <listitem> <simpara> <function>timezone_identifiers_list</function> - Ãntoarce un masiv numeric indexat cu toate identificatoarele fusurilor orare </simpara> </listitem> <listitem> <simpara> <function>timezone_name_from_abbr</function> - Ãntoarce denumirea fusului orar din abreviere </simpara> </listitem> <listitem> <simpara> <function>stream_socket_shutdown</function> - CauzeazÄ deconectarea totalÄ sau parÅ£ialÄ a unei conexiuni full-duplex realizatÄ prin intermediul unui socket asociat cu un flux. Ãncepând cu PHP 5.2.1. </simpara> </listitem> </itemizedlist> <para><link linkend="ref.image">Imagini</link>:</para> <itemizedlist> <listitem> <simpara> <function>imagegrabscreen</function> - IntercepteazÄ imaginea întregului ecran. Ãncepând cu PHP 5.2.2. </simpara> </listitem> <listitem> <simpara> <function>imagegrabwindow</function> - CaptureazÄ o fereastrÄ. Ãncepând cu PHP 5.2.2. </simpara> </listitem> </itemizedlist> <para><link linkend="ref.mbstring">mbstring</link>:</para> <itemizedlist> <!-- FIXME: Apparently these two never made it into a release see bug#41070 <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> - GÄseÅte poziÅ£ia primei apariÅ£ii a unui string în cadrul altuia, fÄrÄ a lua în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_stristr</function> - GÄseÅte prima apariÅ£ie a unui string în cadrul altuia, luând în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strrchr</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string </simpara> </listitem> <listitem> <simpara> <function>mb_strrichr</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string, luând în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strripos</function> - GÄseÅte ultima apariÅ£ie a unui caracter dintr-un string în cadrul altui string, fÄrÄ a lua în consideraÅ£ie caracterele minuscule/majuscule </simpara> </listitem> <listitem> <simpara> <function>mb_strstr</function> - GÄseÅte prima apariÅ£ie a unui string în cadrul altuia </simpara> </listitem> </itemizedlist> <para><link linkend="ref.ming">ming</link> (Ãncepând cu PHP 5.2.1):</para> <itemizedlist> <listitem> <simpara> void ming_setSWFCompression(int num) - StabileÅte compresia ieÅirii </simpara> </listitem> <listitem> <simpara> void swfmovie::namedanchor(string name) - CreazÄ o ancorÄ </simpara> </listitem> <listitem> <simpara> void swfmovie::protect([string pasword]) - ProtejeazÄ </simpara> </listitem> </itemizedlist> <para><link linkend="ref.openssl">openssl</link>:</para> <itemizedlist> <listitem> <simpara> <function>openssl_csr_get_public_key</function> - Extrage cheia publicÄ dintr-un CERT Åi o pregÄteÅte pentru utilizare </simpara> </listitem> <listitem> <simpara> <function>openssl_csr_get_subject</function> - Ãntoarce subiectul unui CERT </simpara> </listitem> <listitem> <simpara> <function>openssl_pkey_get_details</function> - Ãntoarce un masiv cu detaliile cheii (biÅ£ii, pkey, tipul) </simpara> </listitem> </itemizedlist> <para><link linkend="ref.spl">spl</link>:</para> <itemizedlist> <listitem> <simpara> <function>spl_object_hash</function> - Ãntoarce id-ul hash-ului pentru un obiect dat </simpara> </listitem> <listitem> <simpara> int iterator_apply(Traversable it, mixed function [, mixed params]) - ApeleazÄ o funcÅ£ie pentru fiecare element într-un iterator </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pcre">pcre</link>:</para> <itemizedlist> <listitem> <simpara> <function>preg_last_error</function> - Ãntoarce codul erorii a ultimei execuÅ£ii regex </simpara> </listitem> </itemizedlist> <para><link linkend="ref.pgsql">pgsql</link>:</para> <itemizedlist> <listitem> <simpara> <function>pg_field_table</function> - Ãntoarce denumirea tabelei cÄreia îi aparÅ£ine câmpul, sau oid-ul tabelei dacÄ <literal>oid_only</literal> este &true; </simpara> </listitem> </itemizedlist> <para><link linkend="ref.posix">posix</link>:</para> <itemizedlist> <listitem> <simpara> <function>posix_initgroups</function> - CalculeazÄ lista de acces a grupului pentru utilizatorul specificat în denumire </simpara> </listitem> </itemizedlist> <para><link linkend="ref.gmp">gmp</link>:</para> <itemizedlist> <listitem> <simpara> <function>gmp_nextprime</function> - CalculeazÄ urmÄtorul numÄr prim </simpara> </listitem> </itemizedlist> <para><link linkend="ref.xmlwriter">xmlwriter</link>:</para> <itemizedlist> <listitem> <simpara> <function>xmlwriter_full_end_element</function> - FinalizeazÄ elementul curent - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_write_raw</function> - Ãnscrie textul - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_start_dtd_entity</function> - CreazÄ o entitate DTD de start - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_end_dtd_entity</function> - FinalizeazÄ entitatea DTD curentÄ - întoarce &false; la eroare </simpara> </listitem> <listitem> <simpara> <function>xmlwriter_write_dtd_entity</function> - Ãnscrie eticheta entitÄÅ£ii DTD depline - întoarce &false; la eroare </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.methods"> <title>Metode noi</title> <para> Ãn 5.2.0 au fost introduse metode noi: </para> <para><link linkend="book.dom">dom</link>:</para> <itemizedlist> <listitem> <simpara> <function>DOMDocument::registerNodeClass</function> - ÃnregistreazÄ clasa extinsÄ utilizatÄ pentru a crea tipul de bazÄ al nodului </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttribute</function> - DeclarÄ atributul specificat dupÄ denumire pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttributeNode</function> - DeclarÄ atributul specificat dupÄ nod pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> <function>DOMElement::setIDAttributeNS</function> - DeclarÄ atributul specificat dupÄ numele local Åi spaÅ£iul de nume URI pentru a fi de tip ID </simpara> </listitem> <listitem> <simpara> DOMNode::C14N([bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - EfectueazÄ transformarea canonicÄ a nodurilor într-un string </simpara> </listitem> <listitem> <simpara> DOMNode::C14NFile(string uri [, bool exclusive [, bool with_comments [, array xpath [, array ns_prefixes]]]]) - EfectueazÄ transformarea canonicÄ a nodurilor într-un fiÅier </simpara> </listitem> <listitem> <simpara> DOMNode::getNodePath() - ObÅ£ine un <literal>xpath</literal> pentru un nod </simpara> </listitem> </itemizedlist> <para><link linkend="ref.soap">soap</link>:</para> <itemizedlist> <listitem> <simpara> SoapServer::setObject(object obj) - StabileÅte obiectul care va gestiona interpelÄrile SOAP </simpara> </listitem> </itemizedlist> <para><link linkend="ref.spl">spl</link>:</para> <itemizedlist> <listitem> <simpara> int ArrayObject::asort(void) - SorteazÄ Ã®nregistrÄrile dupÄ valori </simpara> </listitem> <listitem> <simpara> int ArrayObject::ksort(void) - SorteazÄ Ã®nregistrÄrile dupÄ cheie </simpara> </listitem> <listitem> <simpara> int ArrayObject::natcasesort(void) - SorteazÄ Ã®nregistrÄrile dupÄ cheie utilizând algoritmul "ordinii naturale", ce nu diferenÅ£iazÄ caracterele minuscule / majuscule. </simpara> </listitem> <listitem> <simpara> int ArrayObject::natsort(void) - SorteazÄ Ã®nregistrÄrile dupÄ valori utilizând algoritmul "ordinii naturale". </simpara> </listitem> <listitem> <simpara> int ArrayObject::uasort(callback cmp_function) - SorteazÄ Ã®nregistrÄrile dupÄ valori utilizând o funcÅ£ie definitÄ de utilizator </simpara> </listitem> <listitem> <simpara> int ArrayObject::uksort(callback cmp_function) - SorteazÄ Ã®nregistrÄrile dupÄ cheie utilizând o funcÅ£ie definitÄ de utilizator </simpara> </listitem> <listitem> <simpara> ArrayIterator AppendIterator::getArrayIterator() - ObÅ£ine acces la <literal>ArrayIterator</literal> intern </simpara> </listitem> <listitem> <simpara> int AppendIterator::getIteratorIndex() - ObÅ£ine indicele iteratorului </simpara> </listitem> <listitem> <simpara> bool CachingIterator::getCache() - Ãntoarce cache-ul </simpara> </listitem> <listitem> <simpara> int CachingIterator::getFlags() - Ãntoarce fanioanele interne </simpara> </listitem> <listitem> <simpara> bool CachingIterator::offsetExists(mixed index) - Ãntoarce &true; dacÄ indicele cerut existÄ </simpara> </listitem> <listitem> <simpara> string CachingIterator::offsetGet(mixed index) - Ãntoarce cache-ul intern dacÄ este utilizat </simpara> </listitem> <listitem> <simpara> void CachingIterator::offsetSet(mixed index, mixed newval) - StabileÅte indicele dat în cache </simpara> </listitem> <listitem> <simpara> void CachingIterator::offsetUnset(mixed index) - EliminÄ indicele dat din cache </simpara> </listitem> <listitem> <simpara> void CachingIterator::setFlags() - StabileÅte fanioanele interne </simpara> </listitem> <listitem> <simpara> array("delimiter" =>, "enclosure" =>) SplFileObject::getCsvControl(void) - ObÅ£ine caracterele de delimitare Åi încapsulare utilizate în <function>fgetcsv</function> </simpara> </listitem> <listitem> <simpara> void SplFileObject::setCsvControl([string delimiter = ',' [, string enclosure = '"']]) - StabileÅte caracterele de delimitare Åi încapsulare utilizate în <function>fgetcsv</function> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.tidy">Tidy</link></para> <itemizedlist> <listitem> <simpara> tidyNode <link linkend="function.tidynode-getparent">tidyNode::getParent(void)</link> - Ãntoarce nodul-pÄrinte al nodului curent (adÄugat în PHP 5.2.2) </simpara> </listitem> </itemizedlist> <para><link linkend="book.xmlreader">XMLReader</link></para> <itemizedlist> <listitem> <simpara> boolean XMLReader::setSchema(string filename) - UtilizeazÄ schema W3C XSD pentru a valida documentul în timp ce este procesat. Activarea este posibilÄ numai înainte de primul <literal>Read()</literal> </simpara> </listitem> </itemizedlist> <para><link linkend="ref.zip">zip</link>:</para> <itemizedlist> <listitem> <simpara> <link linkend="function.ziparchive-addemptydir">ZipArchive::addEmptyDir()</link> - CreeazÄ un director vid în arhivÄ </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.removed-extensions"> <title>Extensiile eliminate</title> <para> Aceste extensii au fost transferate în PECL Åi nu mai fac parte din distributivul PHP. Versiunile-pachete PECL ale acestor extensii vor fi create conform cerinÅ£elor utilizatorilor. </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 xml:id="migration52.new-extensions"> <title>Extensii noi</title> <para> UrmÄtoarele sunt extensii noi adÄugate (implicit) începând cu PHP 5.2.0: </para> <itemizedlist> <listitem> <simpara> <link linkend="ref.filter">Filtru</link> - valideazÄ Åi filtreazÄ datele Åi este proiectat pentru a fi utilizat cu date nesecurizate, cum ar fi cele introduse de utilizator. AceastÄ extensie este activatÄ implicit; modul implicit RAW nu ar vre-un impact asupra datelor introduse. </simpara> </listitem> <listitem> <simpara> <link linkend="ref.json">JSON</link> - implementeazÄ formatul de schimb al datelor JavaScript Object Notation (JSON) — Notarea Obiectelor în JavaScript. AceastÄ extensie este activatÄ implicit. </simpara> </listitem> <listitem> <simpara> <link linkend="ref.zip">Zip</link> - vÄ permite sÄ Ã®nscrieÅ£i Åi sÄ citiÅ£i în mod transparent arhive comprimate ZIP Åi fiÅierele din interiorul lor. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.classes"> <title>Clase noi</title> <para> UrmÄtoarele clase au fost introduse în 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 - extinde <classname>FilterIterator</classname>; implementeazÄ <classname>Iterator</classname>, <classname>Traversable</classname>, <classname>OuterIterator</classname> </simpara> <simpara> Constante: </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> ProprietÄÅ£i: </simpara> <itemizedlist> <listitem> <simpara> public <property>replacement</property> </simpara> </listitem> </itemizedlist> <simpara> Metode: </simpara> <itemizedlist> <listitem> <simpara> RegexIterator::__construct(Iterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - CreeazÄ un <literal>RegexIterator</literal> dintr-un alt iterator Åi o expresie regularÄ </simpara> </listitem> <listitem> <simpara> bool RegexIterator::accept() - PotriveÅte (string)current() conform expresiei regulare </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getFlags() - Ãntoarce fanioanele operaÅ£ionale curente </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getMode() - Ãntoarce modul operaÅ£ional curent </simpara> </listitem> <listitem> <simpara> bool RegexIterator::getPregFlags() - Ãntoarce fanioanele PREG curente (dacÄ se utilizeazÄ) sau &null; </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setFlags(int new_flags) - StabileÅte fanioanele operaÅ£ionale </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setMode(int new_mode) - StabileÅte noul mod operaÅ£ional </simpara> </listitem> <listitem> <simpara> bool RegexIterator::setPregFlags(int new_flags) - StabileÅte fanioanele PREG </simpara> </listitem> </itemizedlist> </listitem> <listitem> <simpara> RecursiveRegexIterator </simpara> <simpara> Constante: </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> Metode: </simpara> <itemizedlist> <listitem> <simpara> RecursiveRegexIterator::__construct(RecursiveIterator it, string regex [, int mode [, int flags [, int preg_flags]]]) - CreeazÄ un <literal>RecursiveRegexIterator</literal> dintr-un alt iterator recursiv Åi o expresie regularÄ </simpara> </listitem> <listitem> <simpara> RecursiveRegexIterator RecursiveRegexIterator::getChildren() - Ãntoarce fiii iteratorului intern, ce se conÅ£in într-un <literal>RecursiveRegexIterator</literal> </simpara> </listitem> <listitem> <simpara> bool RecursiveRegexIterator::hasChildren() - VerificÄ dacÄ elementul curent al iteratorului intern posedÄ fii </simpara> </listitem> </itemizedlist> </listitem> </itemizedlist> </section> <section xml:id="migration52.global-constants"> <title>Constante globale noi</title> <para>Nucleul PHP:</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> <listitem> <simpara> <constant>CURLOPT_TCP_NODELAY</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.1. </simpara> </listitem> <listitem> <simpara> <constant>CURLOPT_TIMEOUT_MS</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.3 </simpara> </listitem> <listitem> <simpara> <constant>CURLOPT_CONNECTTIMEOUT_MS</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.3 </simpara> </listitem> </itemizedlist> <para><link linkend="ref.gmp">GMP</link>:</para> <itemizedlist> <listitem> <simpara> <constant>GMP_VERSION</constant> </simpara> <simpara> AdÄugatÄ Ã®n PHP 5.2.2. </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 xml:id="migration52.class-constants"> <title>Constante de clase noi</title> <para><link linkend="intro.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> <listitem> <simpara> <constant>PDO::FETCH_KEY_PAIR</constant> </simpara> <simpara> TransleazÄ un set de rezultate în 2 coloane într-un masiv asociativ. (AdÄugatÄ Ã®n PHP 5.2.3) </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 xml:id="migration52.newconf"> <title>Noile directive de configurare INI</title> <para> Noi directive ale &php.ini; au fost introduse în PHP 5.2.0: </para> <itemizedlist> <listitem> <simpara> <link linkend="ini.allow-url-include">allow_url_include</link> </simpara> <simpara> AceastÄ opÅ£iune utilÄ face posibilÄ diferenÅ£ierea dintre operaÅ£iunile standarde asupra fiÅierelor la distanÅ£Ä Åi includerea fiÅierelor la distanÅ£Ä. Ãn timp ce prima este de obicei dezirabilÄ, ultima poate fi un risc de securitate dacÄ este utilizatÄ naiv. Ãncepând cu PHP 5.2.0 puteÅ£i permite efectuarea operaÅ£iunilor asupra fiÅierelor la distanÅ£Ä, interzicând totodatÄ includerea fiÅierelor la distanÅ£Ä Ã®n script-urile locale. De fapt, aceasta este configuraÅ£ia implicitÄ. </simpara> </listitem> <listitem> <simpara> <link linkend="ini.pcre.backtrack-limit">pcre.backtrack_limit</link> </simpara> <simpara> Limita de backtracking a PCRE. </simpara> </listitem> <listitem> <simpara> <link linkend="ini.pcre.recursion-limit">pcre.recursion_limit</link> </simpara> <simpara> Limita de recursie a PCRE. ObservaÅ£i cÄ dacÄ stabiliÅ£i aceastÄ valoare prea mare, puteÅ£i sÄ consumaÅ£i toatÄ stiva disponibilÄ a procesului Åi eventual sÄ suspendaÅ£i PHP (din cauza atingerii limitei dimensiunii stivei, impusÄ de sistemul de operare). </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.cookie-httponly">session.cookie_httponly</link> </simpara> <simpara> MarcheazÄ prÄjiturile ca fiind accesibile numai prin intermediul protocolului HTTP. Aceasta înseamnÄ cÄ prÄjitura nu va fi accesibilÄ prin intermediul limbajelor de scriptare, cum ar fi JavaScript. AceastÄ opÅ£iune poate efectiv ajuta la reducerea furtului de identitate prin atacuri XSS (cu toate cÄ aceasta nu este susÅ£inut de toate navigatoarele). </simpara> </listitem> </itemizedlist> <para> Directive noi în PHP 5.2.2: </para> <itemizedlist> <listitem> <simpara> <link linkend="ini.max-input-nesting-level">max_input_nesting_level</link> </simpara> <simpara> LimiteazÄ adâncimea încorporÄrii <link linkend="language.variables.external">variabilelor de intrare</link>, implicit este 64. </simpara> </listitem> </itemizedlist> </section> <section xml:id="migration52.errorrep"> <title>Raportarea erorilor</title> <para> Unele din condiÅ£iile <constant>E_ERROR</constant> existente au fost convertite în ceva ce poate fi interceptat cu ajutorul unui handler de erori definit de utilizator. DacÄ o <link linkend="errorfunc.constants"><constant>E_RECOVERABLE_ERROR</constant></link> nu este interceptatÄ, ea se va comporta la fel ca Åi <constant>E_ERROR</constant> în toate versiunile PHP. Erorile de acest tip sunt înscrise în jurnal ca <literal>Eroare fatalÄ interceptabilÄ</literal>. </para> <para> AceastÄ schimbare înseamnÄ cÄ valoarea <constant>E_ALL</constant> a constantei <link linkend="ini.error-reporting">error_reporting</link> este acum 6143, în timp ce valoarea precedentÄ era 2047. Deoarece constantele PHP nu au nici o însemnÄtate în afara PHP, în unele cazuri este utilizatÄ valoarea întreagÄ, de aceea ea va trebui ajustatÄ. Deci, spre exemplu, stabilind modul <literal>error_reporting</literal> în fiÅierele <link linkend="apache.configuration">httpd.conf</link> sau <filename>.htaccess</filename>, valoarea trebuie schimbatÄ corespunzÄtor. AcelaÅi lucru este valabil atunci când valorile numerice sunt utilizate în locul constantelor în script-urile PHP. </para> <para> Ca efect secundar a unei schimbÄri efectuate pentru a preveni dublarea mesajelor de eroare atunci când <link linkend="ini.track-errors">track_errors</link> este <literal>On</literal>, acum este necesar de a întoarce &false; din handler-ele de erori definite de utilizator pentru a popula <link linkend="reserved.variables.phperrormsg">$php_errormsg</link>. Aceasta oferÄ un control granular asupra nivelelor mesajelor stocate. </para> </section> <section xml:id="migration52.other"> <title>Alte îmbunÄtÄÅ£iri</title> <itemizedlist> <listitem> <simpara> Managerul îmbunÄtÄÅ£it al memoriei Åi limita implicitÄ mÄritÄ a memoriei. </simpara> <simpara> Noul manager al memoriei alocÄ mai puÅ£inÄ memorie Åi lucreazÄ mai rapid decât încarnarea precedentÄ. El alocÄ memorie din sistem în blocuri largi Åi apoi gestioneazÄ grÄmada (heap) independent. Valoarea <literal>memory_limit</literal> din &php.ini; este verificatÄ nu la fiecare apel <literal>emalloc()</literal> (ca înainte), dar pentru blocurile de facto cerute de la sistem. Aceasta înseamnÄ cÄ <literal>memory_limit</literal> este mult mai exact decât era, deoarece vechiul manager al memoriei nu calcula tot necesarul de memorie utilizat de biblioteca <literal>malloc</literal>. </simpara> <simpara> DatoritÄ acestei precizii obÅ£inute utilizarea memoriei poate pÄrea sÄ se fi mÄrit, cu toate cÄ, de fapt, nu este aÅa. Pentru a acomoda aceastÄ mÄrire aparentÄ, valoarea implicitÄ a <literal>memory_limit</literal> de asemenea a fost mÄritÄ - de la 8 la 16 megaocteÅ£i. </simpara> </listitem> <listitem> <simpara> S-a adÄugat susÅ£inerea constructorilor în interfeÅ£e pentru a forÅ£a verificarea semnÄturilor constructorilor în implementÄri. </simpara> <simpara> Ãncepând cu PHP 5.2.0, interfeÅ£ele pot avea constructori. ÃnsÄ dacÄ alegeÅ£i sÄ declaraÅ£i un constructor într-o interfaÅ£Ä, fiecare clasÄ ce va implementa aceastÄ interfaÅ£Ä TREBUIE sÄ includÄ un constructor cu o semnÄturÄ identicÄ cu acea a constructorului din interfaÅ£a de bazÄ. Prin 'semnÄturÄ' se înÅ£eleg definiÅ£iile tipurilor parametrilor Åi a valorii întoarse, inclusiv orice fel de indicatori expliciÅ£i ai tipurilor Åi faptul dacÄ datele sunt transmise prin referinÅ£Ä, sau prin valoare. </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 -->