cvs: phpdoc-ru /appendices migration5.xml
| From: | Antony Dovgal | Date: | Sat, 17 Sep 2005 21:02:21 +0000 |
| Subject: | cvs: phpdoc-ru /appendices migration5.xml | ||
| Groups: | php.doc.ru | ||
| Request: | Send a blank email to doc-ru+get-698@lists.php.net to get a copy of this message | ||
tony2001 Sat Sep 17 17:02:21 2005 EDT
Added files:
/phpdoc-ru/appendices migration5.xml
Log:
add file translated by Oleg Shimchik aka The Wanderer
http://cvs.php.net/co.php/phpdoc-ru/appendices/migration5.xml?r=1.1&p=1 Index: phpdoc-ru/appendices/migration5.xml +++ phpdoc-ru/appendices/migration5.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <appendix id="migration5"> <title>ÐигÑаÑÐ¸Ñ Ñ PHP 4 на PHP 5</title> <section id='migration5.changes'> <title>ЧÑо изменилоÑÑ Ð² PHP 5</title> <para> PHP 5 и инÑегÑиÑованнÑй Zend Engine 2 пÑивнеÑли оÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾Ðµ в плане пÑоизводиÑелÑноÑÑи и ÑпиÑка возможноÑÑей PHP, однако пÑилагалоÑÑ Ð¼Ð°ÐºÑимÑм ÑÑилий Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ ÑовмеÑÑимоÑÑÑ Ñ Ð¼Ð°ÐºÑималÑнÑм обÑемом ÑÑÑеÑÑвÑÑÑего кода. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ð¸Ð³ÑаÑÐ¸Ñ Ð²Ð°Ñего кода Ñ PHP 4 на 5 должна бÑÑÑ ÐºÑайне пÑоÑÑа. ÐолÑÑинÑÑво ÑÑÑеÑÑвÑÑÑего кода на PHP 4 должно запÑÑкаÑÑÑÑ Ð±ÐµÐ· вÑÑÐºÐ¸Ñ Ð¿Ñоблем, но вам вÑе Ñавно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ знаÑÑ Ð¾ <link linkend="migration5.incompatible">неболÑÑÐ¸Ñ ÑазлиÑиÑÑ </link> и озабоÑиÑÑÑÑ ÑеÑÑиÑованием ваÑего кода пеÑед Ñменой веÑÑии в production-ÑÑÐµÐ´Ð°Ñ . </para> </section> <section id="migration5.incompatible"> <title>ÐзменениÑ, повлекÑие за Ñобой обÑаÑнÑÑ Ð½ÐµÑовмеÑÑимоÑÑÑ</title> <para> ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо болÑÑинÑÑво кода на PHP 4 должно ÑабоÑаÑÑ Ð±ÐµÐ·Ð¾ вÑÑÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, вам ÑледÑÐµÑ Ð¾Ð±ÑаÑиÑÑ Ð²Ð¸Ð¼Ð°Ð½Ð¸Ðµ на ÑледÑÑÑие изменениÑ, повлекÑие за Ñобой обÑаÑнÑÑ Ð½ÐµÑовмеÑÑимоÑÑÑ: </para> <itemizedlist> <listitem> <simpara> ÐеÑколÑко <link linkend="reserved.keywords">новÑÑ Ð·Ð°ÑезиÑвиÑованнÑÑ ÐºÐ»ÑÑевÑÑ Ñлов</link>. </simpara> </listitem> <listitem> <simpara> <function>strrpos</function> и <function>strripos</function> ÑепеÑÑ Ð¸ÑполÑзÑÑÑ Ð²ÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ°Ðº needle. </simpara> </listitem> <listitem> <simpara> ÐепÑавилÑное иÑполÑзование ÑмеÑÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи ÑÑÑоки вÑзÑÐ²Ð°ÐµÑ <constant>E_ERROR</constant> вмеÑÑо <constant>E_WARNING</constant>. ÐÑÐ¸Ð¼ÐµÑ Ð½ÐµÐ¿ÑавилÑного иÑполÑзованиÑ: <literal>$str = 'abc'; unset($str[0]);</literal>. </simpara> </listitem> <listitem> <simpara> <function>array_merge</function> изменена Ñаким обÑазом, ÑÑо пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² каÑеÑÑве аÑгÑменÑа ÑолÑко маÑÑивÑ. ÐÑли бÑла пеÑедана пеÑеменнаÑ, не ÑвлÑÑÑаÑÑÑ Ð¼Ð°ÑÑивом, бÑÐ´ÐµÑ ÑгенеÑиÑованна оÑибка <constant>E_WARNING</constant> Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñакого паÑамеÑÑа. ÐÑдÑÑе внимаÑелÑнÑ, поÑÐ¾Ð¼Ñ ÑÑо Ð²Ð°Ñ ÐºÐ¾Ð´ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð´ÑÑг наÑаÑÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ Ð¾Ñибки <constant>E_WARNING</constant>. </simpara> </listitem> <listitem> <simpara> ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑеÑвеÑа PATH_TRANSLATED болÑÑе не опÑеделÑеÑÑÑ Ð½ÐµÑвно под Apache2 SAPI, в оÑлиÑие Ð¾Ñ ÑиÑÑаÑии в PHP 4, где ей пÑиÑваиваеÑÑÑ Ñо же знаÑение, ÑÑо и пеÑеменной ÑеÑвеÑа SCRIPT_FILENAME, когда она не опÑеделÑеÑÑÑ Apache. ÐÑо изменение бÑло Ñделано Ð´Ð»Ñ ÑооÑвеÑÑÑÐ²Ð¸Ñ <ulink url="&url.cgispecs;">ÑпеÑиÑикаÑии CGI</ulink>. ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº <ulink url="&url.php.bugs;23610">оÑибке #23610</ulink> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð°Ð»ÑнейÑий инÑоÑмаÑии, а Ñакже поÑмоÑÑиÑе опиÑание <link linkend="reserved.variables.server"> $_SERVER['PATH_TRANSLATED']</link> в данном ÑÑководÑÑве. ÐÑо изменение Ñакже Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо в PHP веÑÑий >= 4.3.2. </simpara> </listitem> <listitem> <simpara> ÐонÑÑанÑа <constant>T_ML_COMMENT</constant> болÑÑе не обÑÑвлÑеÑÑÑ ÑаÑÑиÑением <link linkend="ref.tokenizer">Tokenizer</link>. ÐÑли диÑекÑива error_reporting ÑÑÑановлена в <constant>E_ALL</constant>, PHP ÑгенеÑиÑÑÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑÑÐ¾Ð²Ð½Ñ <constant>E_NOTICE</constant>. ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо <constant>T_ML_COMMENT</constant> не иÑполÑзовалаÑÑ Ð²Ð¾Ð¾Ð±Ñе, она бÑла обÑÑвлена в PHP 4. Ðак в PHP 4, Ñак и в PHP 5 // и /* */ опÑеделÑÑÑÑÑ ÐºÐ°Ðº <constant>T_COMMENT</constant>. Так или инаÑе, комменÑаÑии /** */ в ÑÑиле PHPDoÑ, коÑоÑÑе наÑÐ¸Ð½Ð°Ñ Ñ PHP 5 анализиÑÑÑÑÑÑ PHP, ÑаÑпознаÑÑÑÑ ÐºÐ°Ðº <constant>T_DOC_COMMENT</constant>. </simpara> </listitem> <listitem> <simpara> СÑпеÑглобалÑнÑй маÑÑив $_SERVER бÑÐ´ÐµÑ Ñоздан вмеÑÑе Ñ Ð¿ÐµÑеменнÑми argc и argv, еÑли <link linkend="ini.variables-order">variables_order</link> вклÑÑÐ°ÐµÑ "S". ÐÑли Ð²Ñ ÑконÑигÑÑиÑовали инÑеÑпÑеÑаÑÐ¾Ñ Ñаким обÑазом, ÑÑо $_SERVER не ÑоздаÑÑÑÑ, Ñогда, конеÑно, ÐµÑ Ð½Ðµ бÑдеÑ. Ðзменение заклÑÑаеÑÑÑ Ð² Ñом, ÑÑÐ¾Ð±Ñ ÑделаÑÑ argc и argv вÑегда доÑÑÑпнÑми в CLI-веÑÑии, вне завиÑимоÑÑи Ð¾Ñ <link linkend="ini.variables-order">variables_order</link>. Ðак Ñже бÑло Ñказано, CLI-веÑÑÐ¸Ñ ÑепеÑÑ Ð²Ñегда бÑÐ´ÐµÑ Ð¾Ð±ÑÑвлÑÑÑ Ð¿ÐµÑеменнÑе $argc и $argv. </simpara> </listitem> <listitem> <simpara> ÐбÑÐµÐºÑ Ð±ÐµÐ· ÑвойÑÑв болÑÑе не ÑÑиÑаеÑÑÑ "пÑÑÑÑм". </simpara> </listitem> <listitem> <simpara> РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÐºÐ»Ð°ÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¾Ð±ÑÑвлен пеÑед иÑполÑзованием. ÐÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑолÑко в Ñом ÑлÑÑае, еÑли иÑполÑзÑÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе новÑе ÑÑнкÑии PHP 5. ÐнаÑе поведение оÑÑаеÑÑÑ ÑÑаÑÑм. </simpara> </listitem> <listitem> <simpara> <function>get_class</function>, <function>get_parent_class</function> и <function>get_class_methods</function> ÑепеÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑов/меÑодов Ñак, как они бÑли обÑÑÐ²Ð»ÐµÐ½Ñ (Ñ ÑÑеÑом ÑегиÑÑÑа), ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к пÑоблемам Ñо ÑÑаÑÑми ÑкÑипÑами, коÑоÑÑе полагаÑÑÑÑ Ð½Ð° пÑежнее поведение (Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа/меÑода вÑегда бÑло пÑиведено к Ð½Ð¸Ð¶Ð½ÐµÐ¼Ñ ÑегиÑÑÑÑ). ÐозможнÑм ÑеÑением ÑвлÑеÑÑÑ Ð¿Ð¾Ð¸Ñк ÑÑÐ¸Ñ ÑÑнкÑий в ваÑÐ¸Ñ ÑкÑипÑÐ°Ñ Ð¸ добавление пеÑед ними <function>strtolower</function>. </simpara> <simpara> ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾ÑноÑиÑелÑно ÑегиÑÑÑозавиÑимоÑÑи Ñакже заÑÑагиваÑÑ <link linkend="language.constants.predefined">магиÑеÑкие конÑÑанÑÑ</link> <constant>__CLASS__</constant>, <constant>__METHOD__</constant> и <constant>__FUNCTION__</constant>. ÐнаÑÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑÑÑ Ð² именно Ñаком виде, в каком они обÑÐ²Ð»ÐµÐ½Ñ (Ñ ÑÑеÑом ÑегиÑÑÑа). </simpara> </listitem> <listitem> <simpara> <function>ip2long</function> ÑепеÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ &false;, а не <literal>-1</literal>, когда в каÑеÑÑве аÑгÑменÑа ÑÑнкÑии пеÑедаеÑÑÑ Ð½ÐµÐ¿ÑавилÑнÑй IP-адÑеÑ. </simpara> </listitem> <listitem> <simpara> ÐÑли во вклÑÑенном Ñайле обÑÑÐ²Ð»ÐµÐ½Ñ ÐºÐ°ÐºÐ¸Ðµ-либо ÑÑнкÑии, они могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¸ в главном Ñайле, вне завиÑимоÑÑи Ð¾Ñ Ñого, ÑаÑполагаÑÑÑÑ Ð¾Ð½Ð¸ до <function>return</function> или поÑле. ÐÑли Ñайл вклÑÑаеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ, PHP 5 генеÑиÑÑÐµÑ ÑаÑалÑнÑÑ Ð¾ÑибкÑ, Ñак как ÑÑнкÑии Ñже бÑли обÑÑвленÑ, в Ñо вÑемÑ, как PHP 4 не жалÑеÑÑÑ Ð½Ð° ÑÑо. РекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ <function>include_once</function> вмеÑÑо пÑовеÑки, бÑл ли Ñже вклÑÑен Ñайл и ÑÑловного возвÑаÑа внÑÑÑи вклÑÑенного Ñайла. </simpara> </listitem> <listitem> <simpara> <function>include_once</function> и <function>require_once</function> ÑнаÑала ÑÑандаÑÑизиÑÑÑÑ Ð¿ÑÑÑ Ðº вклÑÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑÐ°Ð¹Ð»Ñ Ð² Windows, Ñак ÑÑо пÑи вклÑÑении A.php и a.php Ñайл вклÑÑаеÑÑÑ ÑолÑко один Ñаз. </simpara> </listitem> </itemizedlist> <para> <example> <title><function>strrpos</function> и <function>strripos</function> ÑепеÑÑ Ð¸ÑполÑзÑÑÑ Ð²ÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ°Ðº needle</title> <programlisting role="php"> <![CDATA[ <?php var_dump(strrpos('ABCDEF','DEF')); //int(3) var_dump(strrpos('ABCDEF','DAF')); //bool(false) ?> ]]> </programlisting> </example> </para> <para> <example> <title>ÐбÑÐµÐºÑ Ð±ÐµÐ· ÑвойÑÑв болÑÑе не ÑÑиÑаеÑÑÑ "пÑÑÑÑм"</title> <programlisting role="php"> <![CDATA[ <?php class test { } $t = new test(); var_dump(empty($t)); // echo bool(false) if ($t) { // ÐÑÐ´ÐµÑ Ð²Ñполнено } ?> ]]> </programlisting> </example> </para> <para> <example> <title>РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÐºÐ»Ð°ÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ Ð¿ÐµÑед иÑполÑзованием</title> <programlisting role="php"> <![CDATA[ <?php //ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· оÑибок: $a = new a(); class a { } //вÑзÑÐ²Ð°ÐµÑ Ð¾ÑибкÑ: $a = new b(); interface c{ } class b implements c { } ?> ]]> </programlisting> </example> </para> </section> <section id="migration5.cli-cgi"> <title>CLI и CGI</title> <para> Ð PHP 5 бÑли ÑÐ´ÐµÐ»Ð°Ð½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¸ÑполнÑемÑÑ Ñайлов CLI и CGI. Ð PHP 5, CGI-веÑÑÐ¸Ñ Ð±Ñла пеÑеименована в <filename>php-cgi.exe</filename> (Ñанее <filename>php.exe</filename>), а CLI-веÑÑÐ¸Ñ ÑепеÑÑ ÑаÑполагаеÑÑÑ Ð² главной диÑекÑоÑии (Ñанее <filename>cli/php.exe</filename>). </para> <para> Ð PHP 5 Ñакже поÑвилÑÑ Ð½Ð¾Ð²Ñй Ñежим: <filename>php-win.exe</filename>. Ðн ÑквиваленÑен CLI-веÑÑии, за иÑклÑÑением Ñого, ÑÑо php-win ниÑего не вÑÐ²Ð¾Ð´Ð¸Ñ Ð¸, ÑооÑвеÑÑвенно, не оÑкÑÑÐ²Ð°ÐµÑ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ (окоÑко dos не поÑвлÑеÑÑÑ Ð½Ð° ÑкÑане). Такое поведение Ð¿Ð¾Ñ Ð¾Ð¶Ðµ на php-gtk. </para> <para> Ð PHP 5, CLI-веÑÑÐ¸Ñ Ð²Ñегда пÑедоÑÑавлÑÐµÑ Ð¿ÐµÑеменнÑе <varname>$argv</varname> и <varname>$argc</varname>, вне завиÑимоÑÑи Ð¾Ñ ÐºÐ°ÐºÐ¸Ñ -либо диÑекÑив в &php.ini;. Ðаже ÑÑÑановка <link linkend="ini.register-argc-argv">register_argc_argv</link> в <literal>off</literal> не повлиÑÐµÑ Ð½Ð° Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð½ÑеÑÑейÑа командной ÑÑÑоки. </para> <para> СмоÑÑиÑе Ñакже <link linkend="features.commandline">ÑпÑавоÑник по командной ÑÑÑоке</link>. </para> </section> <section id="migration5.configuration"> <title>ÐигÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ Ñайлов</title> <para> Так как ISAPI-модÑли Ñменили Ñвои имена Ñ php4xxx на php5xxx, вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑоизвеÑÑи некоÑоÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ . Также пÑоизоÑли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ð¸Ð¼ÐµÐ½Ð°Ñ Ñайлов CLI и CGI. ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº <link linkend="migration5.cli-cgi">ÑооÑвеÑÑÑвÑÑÑÐµÐ¼Ñ ÑазделÑ</link> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии. </para> <para> ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑии Apache минималÑнÑ. ÐÑÐ¸Ð¼ÐµÑ Ð½Ð¸Ð¶Ðµ показÑÐ²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, коÑоÑÑе вам ÑÑебÑеÑÑÑ Ð¿ÑоизвеÑÑи: <example> <title>ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ Apache пÑи мигÑаÑии на PHP 5</title> <programlisting role="apache-conf"> <![CDATA[ # замениÑе ÑÑÑ ÑÑÑокÑ: LoadModule php4_module /php/sapi/php4apache2.dll # на ÑÑÑ: LoadModule php5_module /php/php5apache2.dll ]]> </programlisting> </example> </para> <para> ÐÑли Ð²Ð°Ñ Ð²ÐµÐ±-ÑеÑÐ²ÐµÑ ÑабоÑÐ°ÐµÑ Ñ PHP в CGI-Ñежиме, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на Ñо, ÑÑо CGI-веÑÑÐ¸Ñ Ñменила Ñвое Ð¸Ð¼Ñ Ñ <filename>php.exe</filename> на <filename>php-cgi.exe</filename>. Ð Apache вам нÑжно пÑоизвеÑÑи подобнÑе изменениÑ: <example> <title>ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ Apache пÑи мигÑаÑии на PHP 5, CGI-Ñежим</title> <programlisting role="apache-conf"> <![CDATA[ # замениÑе ÑÑÑ ÑÑÑокÑ: Action application/x-httpd-php "/php/php.exe" # на ÑÑÑ: Action application/x-httpd-php "/php/php-cgi.exe" ]]> </programlisting> </example> </para> <para> ÐÑи иÑполÑзовании дÑÑÐ³Ð¸Ñ Ð²ÐµÐ±-ÑеÑвеÑов вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑмениÑÑ Ð»Ð¸Ð±Ð¾ Ð¸Ð¼Ñ CGI, либо Ð¸Ð¼Ñ ISAPI модÑлей. </para> </section> <section id="migration5.functions"> <title>ÐовÑе ÑÑнкÑии</title> <para> Ð PHP 5 поÑвилоÑÑ Ð½ÐµÐºÐ¾ÑоÑое колиÑеÑÑво новÑÑ ÑÑнкÑий. ÐÐ¾Ñ Ð¸Ñ ÑпиÑок: </para> <para><link linkend="ref.array">ÐаÑÑивÑ</link>:</para> <itemizedlist> <listitem> <simpara> <function>array_combine</function> - Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив, иÑполÑзÑÑ Ð¾Ð´Ð¸Ð½ маÑÑив Ð´Ð»Ñ ÐºÐ»ÑÑей, а дÑÑгой - Ð´Ð»Ñ Ð¸Ñ Ð·Ð½Ð°Ñений </simpara> </listitem> <listitem> <simpara> <function>array_diff_uassoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов, пÑоизводимой заданной полÑзоваÑелем ÑÑнкÑией обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_udiff</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов, иÑполÑзÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑаÑного вÑзова Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>array_udiff_assoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_udiff_uassoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова. ÐÑовеÑка индекÑов Ñакже пÑоизводиÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_walk_recursive</function> - ÐÑимениÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкÑÑ ÑÑнкÑÐ¸Ñ ÑекÑÑÑивно к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ Ð¼Ð°ÑÑива </simpara> </listitem> <listitem> <simpara> <function>array_uintersect_assoc</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_uintersect_uassoc</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. Ðак даннÑе, Ñак и индекÑÑ ÑÑавниваÑÑÑÑ Ð¿Ñи помоÑи ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_uintersect</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> </itemizedlist> <para><link linkend="ref.ibase">InterBase</link>:</para> <itemizedlist> <listitem> <simpara> <function>ibase_affected_rows</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво запиÑей, заÑÑонÑÑÑÑ Ð¿ÑедÑдÑÑим запÑоÑом </simpara> </listitem> <listitem> <simpara> <function>ibase_backup</function> - ÐниÑииÑÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ ÑезеÑвного копиÑование в менеджеÑе ÑеÑвиÑов и ÑÑÐ°Ð·Ñ Ð¶Ðµ возвÑаÑÐ°ÐµÑ ÑпÑавление </simpara> </listitem> <listitem> <simpara> <function>ibase_commit_ret</function> - ФикÑиÑÑÐµÑ ÑÑанзакÑиÑ, не закÑÑÐ²Ð°Ñ ÐµÐµ </simpara> </listitem> <listitem> <simpara> <function>ibase_db_info</function> - ÐапÑоÑиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_drop_db</function> - УдалÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_errcode</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð´ оÑибки </simpara> </listitem> <listitem> <simpara> <function>ibase_free_event_handler</function> - ÐÑменÑÐµÑ Ð·Ð°ÑегиÑÑÑиÑованнÑй обÑабоÑÑик ÑобÑÑÐ¸Ñ </simpara> </listitem> <listitem> <simpara> <function>ibase_gen_id</function> - ÐнкÑеменÑиÑÑÐµÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñй генеÑаÑÐ¾Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ новое знаÑение </simpara> </listitem> <listitem> <simpara> <function>ibase_maintain_db</function> - ÐÑполнÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки на ÑеÑвеÑе баз даннÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_name_result</function> - ÐÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð¸Ð¼Ñ Ð½Ð°Ð±Ð¾ÑÑ ÑезÑлÑÑаÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_num_params</function> - ÐозвÑаÑÐ°ÐµÑ ÑиÑло паÑамеÑÑов в подгоÑовленном запÑоÑе </simpara> </listitem> <listitem> <simpara> <function>ibase_param_info</function> - ÐозвÑаÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ паÑамеÑÑе в подгоÑовленном запÑоÑе </simpara> </listitem> <listitem> <simpara> <function>ibase_restore</function> - ÐниÑииÑÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð²Ð¾ÑÑÑановление в менеджеÑе ÑеÑвиÑов и ÑÑÐ°Ð·Ñ Ð¶Ðµ возвÑаÑÐ°ÐµÑ ÑпÑавление </simpara> </listitem> <listitem> <simpara> <function>ibase_rollback_ret</function> - ÐÑкаÑиÑÑ ÑÑанзакÑÐ¸Ñ Ð¸ запомниÑÑ ÐµÐµ конÑекÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_server_info</function> - ÐапÑÑÐ¸Ð²Ð°ÐµÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_service_attach</function> - СоединиÑÑÑÑ Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑом ÑеÑвиÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_service_detach</function> - РазоÑваÑÑ Ñоединение Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑом ÑеÑвиÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_set_event_handler</function> - ÐаÑегиÑÑÑиÑоваÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑаÑного вÑзова, коÑоÑÐ°Ñ Ð²ÑзÑваеÑÑÑ Ð¿Ñи пÑбликаÑии ÑобÑÑÐ¸Ñ </simpara> </listitem> <listitem> <simpara> <function>ibase_wait_event</function> - ÐдаÑÑ ÑобÑÑиÑ, оÑпÑавленного базой даннÑÑ </simpara> </listitem> </itemizedlist> <para><link linkend="ref.iconv">iconv</link>:</para> <itemizedlist> <listitem> <simpara> <function>iconv_mime_decode</function> - ÐекодиÑÑÐµÑ Ð¿Ð¾Ð»Ðµ MIME-заголовка </simpara> </listitem> <listitem> <simpara> <function>iconv_mime_decode_headers</function> - ÐекодиÑÑÐµÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко полей MIME-заголовков </simpara> </listitem> <listitem> <simpara> <function>iconv_mime_encode</function> - СоÑÑавлÑÐµÑ Ð¿Ð¾Ð»Ðµ MIME-заголовка </simpara> </listitem> <listitem> <simpara> <function>iconv_strlen</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñимволов в ÑÑÑоке </simpara> </listitem> <listitem> <simpara> <function>iconv_strpos</function> - ÐÐ°Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿ÐµÑвого Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ needle внÑÑÑи haystack </simpara> </listitem> <listitem> <simpara> <function>iconv_strrpos</function> - ÐÐ°Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿Ð¾Ñледнего Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ needle внÑÑÑи Ñказанного ÑÑда haystack </simpara> </listitem> <listitem> <simpara> <function>iconv_substr</function> - ÐÑÑезаÑÑ ÑаÑÑÑ ÑÑÑоки </simpara> </listitem> </itemizedlist> <para><link linkend="ref.stream">ÐоÑоки</link>:</para> <itemizedlist> <listitem> <simpara> <function>stream_copy_to_stream</function> - ÐопиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ поÑока на дÑÑгой </simpara> </listitem> <listitem> <simpara> <function>stream_get_line</function> - ÐолÑÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¸Ð· заданного ÑеÑÑÑÑа поÑока до данного ÑазделиÑÐµÐ»Ñ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_accept</function> - РазÑеÑиÑÑ Ñоединение на ÑокеÑ, ÑозданнÑй <function>stream_socket_server</function> </simpara> </listitem> <listitem> <simpara> <function>stream_socket_client</function> - ÐÑкÑÑÑÑ Internet или Unix domain ÑÐ¾ÐºÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_get_name</function> - ÐолÑÑиÑÑ Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ Ð¸Ð»Ð¸ ÑдаленнÑÑ ÑокеÑов </simpara> </listitem> <listitem> <simpara> <function>stream_socket_recvfrom</function> - ÐолÑÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе Ð¾Ñ ÑокеÑа, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑоизведено Ñоединение или Ð½ÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_sendto</function> - ÐоÑÑÐ»Ð°ÐµÑ ÑообÑение ÑокеÑÑ, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑоизведено Ñоединение или Ð½ÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_server</function> - СоздаÑÑ Internet или или Unix domain ÑÐ¾ÐºÐµÑ Ð½Ð° ÑÑоÑоне ÑеÑвеÑа </simpara> </listitem> </itemizedlist> <para><link linkend="ref.datetime">СвÑзаннÑе Ñ Ð´Ð°Ñой и вÑеменем</link>:</para> <itemizedlist> <listitem> <simpara> <function>idate</function> - ФоÑмаÑиÑÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñное вÑемÑ/даÑÑ ÐºÐ°Ðº integer </simpara> </listitem> <listitem> <simpara> <function>date_sunset</function> - ÐÑÐµÐ¼Ñ Ð·Ð°Ñ Ð¾Ð´Ð° ÑолнÑа Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð½Ñ Ð¸ меÑÑоÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>date_sunrise</function> - ÐÑÐµÐ¼Ñ Ð²Ð¾ÑÑ Ð¾Ð´Ð° ÑолнÑа Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð½Ñ Ð¸ меÑÑоÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>time_nanosleep</function> - ÐадеÑжка на заданное ÑиÑло ÑекÑнд и наноÑекÑнд </simpara> </listitem> </itemizedlist> <para><link linkend="ref.strings">СÑÑоки</link>:</para> <itemizedlist> <listitem> <simpara> <function>str_split</function> - ÐÑеобÑазоваÑÑ ÑÑÑÐ¾ÐºÑ Ð² маÑÑив </simpara> </listitem> <listitem> <simpara> <function>strpbrk</function> - ÐоиÑк лÑбого набоÑа Ñимволов в ÑÑÑоке </simpara> </listitem> <listitem> <simpara> <function>substr_compare</function> - ÐезопаÑное Ð´Ð»Ñ Ð±Ð¸Ð½Ð°ÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÑионалÑно ÑегиÑÑÑозавиÑимое ÑÑавнение двÑÑ ÑÑÑок, наÑÐ¸Ð½Ð°Ñ Ñ offset и до length Ñимволов </simpara> </listitem> </itemizedlist> <para>ÐÑÑгие:</para> <itemizedlist> <listitem> <simpara> <function>convert_uudecode</function> - декодиÑÑÐµÑ ÑÑÑокÑ, закодиÑованнÑÑ uuencode </simpara> </listitem> <listitem> <simpara> <function>convert_uuencode</function> - кодиÑÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð² uuencode </simpara> </listitem> <listitem> <simpara> <function>curl_copy_handle</function> - ÐопиÑоваÑÑ Ð´ÐµÑкÑипÑÐ¾Ñ cURL вмеÑÑе Ñо вÑеми его наÑÑÑойками </simpara> </listitem> <listitem> <simpara> <function>dba_key_split</function> - Ð Ð°Ð·Ð±Ð¸Ð²Ð°ÐµÑ ÐºÐ»ÑÑ Ð² ÑÑÑоковом пÑедÑÑавлении в пÑедÑÑавление маÑÑива </simpara> </listitem> <listitem> <simpara> <function>dbase_get_header_info</function> - ÐолÑÑÐ°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾ÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ dBase </simpara> </listitem> <listitem> <simpara> <function>dbx_fetch_row</function> - ÐÑбиÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸Ñи из ÑезÑлÑÑаÑа запÑоÑа, в коÑоÑом ÑÑÑановлен Ñлаг DBX_RESULT_UNBUFFERED </simpara> </listitem> <listitem> <simpara> <function>fbsql_set_password</function> - СмениÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ </simpara> </listitem> <listitem> <simpara> <function>file_put_contents</function> - ÐапиÑÑ ÑÑÑоки в Ñайл </simpara> </listitem> <listitem> <simpara> <function>ftp_alloc</function> - ÐÑделÑÐµÑ Ð¼ÐµÑÑо Ð´Ð»Ñ Ð·Ð°Ð³ÑÑжаемого Ñайла </simpara> </listitem> <listitem> <simpara> <function>get_declared_interfaces</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив вÑÐµÑ Ð¾Ð±ÑÑвленнÑÑ Ð¸Ð½ÑеÑÑейÑов </simpara> </listitem> <listitem> <simpara> <function>get_headers</function> - ÐÑбиÑÐ°ÐµÑ Ð²Ñе заголовки, поÑланнÑе ÑеÑвеÑом в оÑÐ²ÐµÑ Ð½Ð° HTTP-запÑÐ¾Ñ </simpara> </listitem> <listitem> <simpara> <function>headers_list</function> - ÐозвÑаÑÐ°ÐµÑ ÑпиÑок поÑланнÑÑ (или гоÑовÑÑ Ðº оÑпÑавке) заголовков оÑвеÑа </simpara> </listitem> <listitem> <simpara> <function>http_build_query</function> - ÐенеÑиÑÑÐµÑ URL-кодиÑованнÑÑ ÑÑÑÐ¾ÐºÑ Ð·Ð°Ð¿ÑоÑа </simpara> </listitem> <listitem> <simpara> <function>image_type_to_extension</function> - ÐолÑÑиÑÑ ÑаÑÑиÑение Ñайла Ð´Ð»Ñ Ñипа изобÑажениÑ, возвÑаÑенного <function>getimagesize</function>, <function>exif_read_data</function>, <function>exif_thumbnail</function>, <function>exif_imagetype</function> </simpara> </listitem> <listitem> <simpara> <function>imagefilter</function> - ÐÑименÑÐµÑ ÑилÑÑÑ Ð¸Ð·Ð¾Ð±ÑажениÑ, иÑполÑзÑÑ Ð²ÑбÑаннÑÑ ÑÐ°Ð·Ñ </simpara> </listitem> <listitem> <simpara> <function>imap_getacl</function> - ÐолÑÑÐ°ÐµÑ ACL Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ поÑÑового ÑÑика </simpara> </listitem> <listitem> <simpara> <function>ldap_sasl_bind</function> - ÐÑивÑзаÑÑ Ðº LDAP-диÑекÑоÑии иÑполÑзÑÑ SASL </simpara> </listitem> <listitem> <simpara> <function>mb_list_encodings</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив вÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаемÑÑ ÐºÐ¾Ð´Ð¸Ñовок </simpara> </listitem> <listitem> <simpara> <function>pcntl_getpriority</function> - ÐолÑÑÐ°ÐµÑ Ð¿ÑиоÑиÑÐµÑ Ð»Ñбого пÑоÑеÑÑа </simpara> </listitem> <listitem> <simpara> <function>pcntl_wait</function> - ÐÐ´ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ ÑÑаÑÑÑ Ð´Ð¾ÑеÑнего ÑазвеÑвленного пÑоÑеÑÑа в завиÑимоÑÑи Ð¾Ñ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑиÑÑемного вÑзова waitpid() </simpara> </listitem> <listitem> <simpara> <function>pg_version</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð½ÑоÑмаÑией о веÑÑии клиенÑа, пÑоÑокола и ÑеÑвеÑа (еÑли доÑÑÑпно) </simpara> </listitem> <listitem> <simpara> <function>php_check_syntax</function> - ÐÑовеÑиÑÑ ÑинÑакÑÐ¸Ñ Ñказанного Ñайла </simpara> </listitem> <listitem> <simpara> <function>php_strip_whitespace</function> - ÐозвÑаÑÐ°ÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код Ñ ÑдаленнÑми комменÑаÑиÑми и пÑобелами </simpara> </listitem> <listitem> <simpara> <function>proc_nice</function> - СмениÑÑ Ð¿ÑиоÑиÑÐµÑ ÑекÑÑего пÑоÑеÑÑа </simpara> </listitem> <listitem> <simpara> <function>pspell_config_data_dir</function> - СмениÑÑ ÑаÑположение Ñайлов даннÑÑ ÑзÑка </simpara> </listitem> <listitem> <simpara> <function>pspell_config_dict_dir</function> - СмениÑÑ ÑаÑположение оÑновного ÑпиÑка Ñлов </simpara> </listitem> <listitem> <simpara> <function>setrawcookie</function> - ÐоÑÑÐ»Ð°ÐµÑ cookie без кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ url знаÑÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>snmp_read_mib</function> - ЧиÑÐ°ÐµÑ Ð¸ анализиÑÑÐµÑ MIB-Ñайл в акÑивное MIB-деÑево </simpara> </listitem> <listitem> <simpara> <function>sqlite_fetch_column_types</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñипов ÑÑолбÑов Ð´Ð»Ñ Ð¾ÑделÑной ÑаблиÑÑ </simpara> </listitem> </itemizedlist> <note> <para> ÐодÑÐ»Ñ <link linkend="ref.tidy">Tidy</link> полноÑÑÑÑ Ñменил Ñвой API. </para> </note> </section> <section id="migration5.newconf"> <title>ÐовÑе диÑекÑивÑ</title> <para> Ð PHP 5 поÑвилоÑÑ Ð½ÐµÑколÑко диÑекÑив &php.ini;. ÐÐ¾Ñ Ð¸Ñ ÑпиÑок: </para> <itemizedlist> <listitem> <simpara> mail.force_extra_parameters - ÐÑинÑдиÑелÑно добавиÑÑ ÑказаннÑе паÑамеÑÑÑ Ðº ÑпиÑÐºÑ Ð¿ÐµÑедаваемÑÑ Ð¸ÑполнÑÐµÐ¼Ð¾Ð¼Ñ ÑÐ°Ð¹Ð»Ñ sendmail. ÐÑи паÑамеÑÑÑ Ð²Ñегда бÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÑÑ Ð·Ð½Ð°Ñение пÑÑого паÑамеÑÑа <function>mail</function>, даже в заÑиÑенном Ñежиме </simpara> </listitem> <listitem> <simpara> <link linkend="ini.register-long-arrays">register_long_arrays</link> - позволиÑÑ/запÑеÑиÑÑ PHP ÑегиÑÑÑиÑоваÑÑ ÑÑÑаÑевÑие длиннÑе маÑÑÐ¸Ð²Ñ $HTTP_*_VARS </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.hash-function">session.hash_function</link> - вÑбÑаÑÑ Ñ ÑÑ-ÑÑнкÑÐ¸Ñ (MD5 или SHA-1) </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.hash-bits-per-character">session.hash_bits_per_character</link> - обÑÑвиÑÑ, ÑколÑко биÑов биÑов Ñ ÑаниÑÑÑ Ð² каждом Ñимволе пÑи конвеÑÑаÑии даннÑÑ Ð±Ð¸Ð½Ð°Ñного Ñ ÑÑа во ÑÑо-Ñо ÑиÑабелÑное (Ñ 4 до 6) </simpara> </listitem> <listitem> <simpara> <link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link> - вклÑÑиÑÑ Ñежим ÑовмеÑÑимоÑÑи Ñ Zend Engine 1 (PHP 4) </simpara> </listitem> </itemizedlist> </section> <section id="migration5.databases"> <title>ÐÐ°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </title> <para> Ð PHP 5 бÑли пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе изменениÑ, каÑаÑÑиеÑÑ Ð¡Ð£ÐÐ (MySQL и SQLite). </para> <para> Ð PHP 5 клиенÑÑкие библиоÑеки MySQL не поÑÑавлÑÑÑÑÑ Ð² комплекÑе из-за лиÑензионнÑÑ Ð¸ некоÑоÑÑÑ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ñоблем. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÑиÑайÑе <link linkend="faq.databases.mysql.php5">запиÑÑ Ð² FAQ</link>. </para> <para> Также пÑиÑÑÑÑÑвÑÐµÑ Ð½Ð¾Ð²Ñй модÑлÑ, <link linkend="ref.mysqli">MySQLi (Improved MySQL)</link>, ÑпÑоекÑиÑованнÑй Ð´Ð»Ñ ÑабоÑÑ Ñ MySQL 4.1 и вÑÑе. </para> <para> ÐаÑÐ¸Ð½Ð°Ñ Ñ PHP 5, модÑÐ»Ñ <link linkend="ref.sqlite">SQLite</link> вÑÑÑоен в PHP. SQLite - ÑÑо вÑÑÑÐ°Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ SQL СУÐÐ, а не клиенÑÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом баз даннÑÑ (Ñаким как MySQL или PostgreSQL). ÐиблиоÑека SQLite ÑиÑÐ°ÐµÑ Ð¸ запиÑÑÐ²Ð°ÐµÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð² и из Ñайлов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° диÑке. </para> </section> <section id='migration5.oop'> <title>ÐÐ¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ ÐоделÑ</title> <para> Ð PHP 5 поÑвилаÑÑ Ð½Ð¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ ÐоделÑ. РабоÑа Ñ Ð¾Ð±ÑекÑами в PHP бÑла полноÑÑÑÑ Ð¿ÐµÑепиÑана, позволÑÑ Ð´Ð¾ÑÑигнÑÑÑ Ð»ÑÑÑей пÑоизводиÑелÑноÑÑи и пÑедоÑÑавлÑÑ Ð½Ð¾Ð²Ñе возможноÑÑи. РпÑедÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ PHP ÑабоÑа Ñ Ð¾Ð±ÑекÑами пÑоизводилаÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно пÑимиÑивнÑм Ñипам (к пÑимеÑÑ, integer и string). ÐедоÑÑаÑком ÑÑого меÑода ÑвлÑлоÑÑ Ñо, ÑÑо ÑеманÑиÑеÑки веÑÑ Ð¾Ð±ÑÐµÐºÑ ÐºÐ¾Ð¿Ð¸ÑовалÑÑ Ð¿Ñи пÑиÑвоении пеÑеменной или пеÑедаÑи ее в каÑеÑÑве паÑамеÑÑа ÑÑнкÑии. ÐÑи новом Ð¿Ð¾Ð´Ñ Ð¾Ð´Ðµ на обÑекÑÑ ÑÑÑлаÑÑÑÑ Ð¿Ð¾ деÑкÑипÑоÑÑ, а не по знаÑÐµÐ½Ð¸Ñ (деÑкÑипÑÐ¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑедÑÑавиÑÑ Ñебе как иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа). </para> <para> Ðногие PHP-пÑогÑаммиÑÑÑ Ð´Ð°Ð¶Ðµ не в кÑÑÑе Ñ Ð¸ÑÑоÑÑей Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑÑаÑой обÑекÑной модели, ÑÑо ознаÑаеÑ, ÑÑо болÑÑинÑÑво из PHP-пÑиложений бÑдÑÑ ÑабоÑаÑÑ Ð»Ð¸Ð±Ð¾ вовÑе безо вÑÑÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, либо Ñ ÑовÑем неболÑÑими изменениÑми. </para> <para> ÐÐ¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð·Ð°Ð´Ð¾ÐºÑменÑиÑована в <link linkend="language.oop5">СпÑавоÑнике по ÑзÑкÑ</link>. </para> <para> ÐбÑаÑиÑе внимание Ñакже на диÑекÑÐ¸Ð²Ñ <link linkend="ini.zend.ze1-compatibility-mode"> zend.ze1_compatibility_mode</link> Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ PHP 4. </para> </section> <section id='migrating5.errorrep'> <title>СообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ </title> <para> ÐаÑÐ¸Ð½Ð°Ñ Ñ PHP 5 бÑл обÑÑвлен новÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾Ñибок - E_STRICT Ñо знаÑением 2048. Ðн позволÑÐµÑ PHP даваÑÑ ÑовеÑÑ Ð¿Ð¾ ÑпоÑобноÑÑи взаимодейÑÑÐ²Ð¸Ñ Ð¸ бÑдÑÑей ÑовмеÑÑимоÑÑи ваÑего кода, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ пÑидеÑживаÑÑÑÑ Ð½Ð°Ð¸Ð»ÑÑÑего меÑода напиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°. Т.е. ÑообÑение ÑÑÐ¾Ð²Ð½Ñ E_STRICT пÑедÑпÑÐµÐ´Ð¸Ñ Ð²Ð°Ñ, еÑли Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ ÑÑÑаÑевÑие ÑÑнкÑии, коÑоÑÑе в бÑдÑÑем бÑдÑÑ ÑдаленÑ. </para> <note> <simpara> E_ALL не вклÑÑÐ°ÐµÑ E_STRICT, Ñак ÑÑо по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾Ñибок вÑклÑÑен </simpara> </note> </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/co.php/phpdoc-ru/appendices/migration5.xml?r=1.1&p=1 Index: phpdoc-ru/appendices/migration5.xml +++ phpdoc-ru/appendices/migration5.xml <?xml version="1.0" encoding="utf-8"?> <!-- $Revision: 1.1 $ --> <appendix id="migration5"> <title>ÐигÑаÑÐ¸Ñ Ñ PHP 4 на PHP 5</title> <section id='migration5.changes'> <title>ЧÑо изменилоÑÑ Ð² PHP 5</title> <para> PHP 5 и инÑегÑиÑованнÑй Zend Engine 2 пÑивнеÑли оÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾Ðµ в плане пÑоизводиÑелÑноÑÑи и ÑпиÑка возможноÑÑей PHP, однако пÑилагалоÑÑ Ð¼Ð°ÐºÑимÑм ÑÑилий Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ ÑовмеÑÑимоÑÑÑ Ñ Ð¼Ð°ÐºÑималÑнÑм обÑемом ÑÑÑеÑÑвÑÑÑего кода. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ð¸Ð³ÑаÑÐ¸Ñ Ð²Ð°Ñего кода Ñ PHP 4 на 5 должна бÑÑÑ ÐºÑайне пÑоÑÑа. ÐолÑÑинÑÑво ÑÑÑеÑÑвÑÑÑего кода на PHP 4 должно запÑÑкаÑÑÑÑ Ð±ÐµÐ· вÑÑÐºÐ¸Ñ Ð¿Ñоблем, но вам вÑе Ñавно Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ знаÑÑ Ð¾ <link linkend="migration5.incompatible">неболÑÑÐ¸Ñ ÑазлиÑиÑÑ </link> и озабоÑиÑÑÑÑ ÑеÑÑиÑованием ваÑего кода пеÑед Ñменой веÑÑии в production-ÑÑÐµÐ´Ð°Ñ . </para> </section> <section id="migration5.incompatible"> <title>ÐзменениÑ, повлекÑие за Ñобой обÑаÑнÑÑ Ð½ÐµÑовмеÑÑимоÑÑÑ</title> <para> ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо болÑÑинÑÑво кода на PHP 4 должно ÑабоÑаÑÑ Ð±ÐµÐ·Ð¾ вÑÑÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, вам ÑледÑÐµÑ Ð¾Ð±ÑаÑиÑÑ Ð²Ð¸Ð¼Ð°Ð½Ð¸Ðµ на ÑледÑÑÑие изменениÑ, повлекÑие за Ñобой обÑаÑнÑÑ Ð½ÐµÑовмеÑÑимоÑÑÑ: </para> <itemizedlist> <listitem> <simpara> ÐеÑколÑко <link linkend="reserved.keywords">новÑÑ Ð·Ð°ÑезиÑвиÑованнÑÑ ÐºÐ»ÑÑевÑÑ Ñлов</link>. </simpara> </listitem> <listitem> <simpara> <function>strrpos</function> и <function>strripos</function> ÑепеÑÑ Ð¸ÑполÑзÑÑÑ Ð²ÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ°Ðº needle. </simpara> </listitem> <listitem> <simpara> ÐепÑавилÑное иÑполÑзование ÑмеÑÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑи ÑÑÑоки вÑзÑÐ²Ð°ÐµÑ <constant>E_ERROR</constant> вмеÑÑо <constant>E_WARNING</constant>. ÐÑÐ¸Ð¼ÐµÑ Ð½ÐµÐ¿ÑавилÑного иÑполÑзованиÑ: <literal>$str = 'abc'; unset($str[0]);</literal>. </simpara> </listitem> <listitem> <simpara> <function>array_merge</function> изменена Ñаким обÑазом, ÑÑо пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð² каÑеÑÑве аÑгÑменÑа ÑолÑко маÑÑивÑ. ÐÑли бÑла пеÑедана пеÑеменнаÑ, не ÑвлÑÑÑаÑÑÑ Ð¼Ð°ÑÑивом, бÑÐ´ÐµÑ ÑгенеÑиÑованна оÑибка <constant>E_WARNING</constant> Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñакого паÑамеÑÑа. ÐÑдÑÑе внимаÑелÑнÑ, поÑÐ¾Ð¼Ñ ÑÑо Ð²Ð°Ñ ÐºÐ¾Ð´ Ð¼Ð¾Ð¶ÐµÑ Ð²Ð´ÑÑг наÑаÑÑ Ð³ÐµÐ½ÐµÑиÑоваÑÑ Ð¾Ñибки <constant>E_WARNING</constant>. </simpara> </listitem> <listitem> <simpara> ÐеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ ÑеÑвеÑа PATH_TRANSLATED болÑÑе не опÑеделÑеÑÑÑ Ð½ÐµÑвно под Apache2 SAPI, в оÑлиÑие Ð¾Ñ ÑиÑÑаÑии в PHP 4, где ей пÑиÑваиваеÑÑÑ Ñо же знаÑение, ÑÑо и пеÑеменной ÑеÑвеÑа SCRIPT_FILENAME, когда она не опÑеделÑеÑÑÑ Apache. ÐÑо изменение бÑло Ñделано Ð´Ð»Ñ ÑооÑвеÑÑÑÐ²Ð¸Ñ <ulink url="&url.cgispecs;">ÑпеÑиÑикаÑии CGI</ulink>. ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº <ulink url="&url.php.bugs;23610">оÑибке #23610</ulink> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð°Ð»ÑнейÑий инÑоÑмаÑии, а Ñакже поÑмоÑÑиÑе опиÑание <link linkend="reserved.variables.server"> $_SERVER['PATH_TRANSLATED']</link> в данном ÑÑководÑÑве. ÐÑо изменение Ñакже Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо в PHP веÑÑий >= 4.3.2. </simpara> </listitem> <listitem> <simpara> ÐонÑÑанÑа <constant>T_ML_COMMENT</constant> болÑÑе не обÑÑвлÑеÑÑÑ ÑаÑÑиÑением <link linkend="ref.tokenizer">Tokenizer</link>. ÐÑли диÑекÑива error_reporting ÑÑÑановлена в <constant>E_ALL</constant>, PHP ÑгенеÑиÑÑÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ ÑÑÐ¾Ð²Ð½Ñ <constant>E_NOTICE</constant>. ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо <constant>T_ML_COMMENT</constant> не иÑполÑзовалаÑÑ Ð²Ð¾Ð¾Ð±Ñе, она бÑла обÑÑвлена в PHP 4. Ðак в PHP 4, Ñак и в PHP 5 // и /* */ опÑеделÑÑÑÑÑ ÐºÐ°Ðº <constant>T_COMMENT</constant>. Так или инаÑе, комменÑаÑии /** */ в ÑÑиле PHPDoÑ, коÑоÑÑе наÑÐ¸Ð½Ð°Ñ Ñ PHP 5 анализиÑÑÑÑÑÑ PHP, ÑаÑпознаÑÑÑÑ ÐºÐ°Ðº <constant>T_DOC_COMMENT</constant>. </simpara> </listitem> <listitem> <simpara> СÑпеÑглобалÑнÑй маÑÑив $_SERVER бÑÐ´ÐµÑ Ñоздан вмеÑÑе Ñ Ð¿ÐµÑеменнÑми argc и argv, еÑли <link linkend="ini.variables-order">variables_order</link> вклÑÑÐ°ÐµÑ "S". ÐÑли Ð²Ñ ÑконÑигÑÑиÑовали инÑеÑпÑеÑаÑÐ¾Ñ Ñаким обÑазом, ÑÑо $_SERVER не ÑоздаÑÑÑÑ, Ñогда, конеÑно, ÐµÑ Ð½Ðµ бÑдеÑ. Ðзменение заклÑÑаеÑÑÑ Ð² Ñом, ÑÑÐ¾Ð±Ñ ÑделаÑÑ argc и argv вÑегда доÑÑÑпнÑми в CLI-веÑÑии, вне завиÑимоÑÑи Ð¾Ñ <link linkend="ini.variables-order">variables_order</link>. Ðак Ñже бÑло Ñказано, CLI-веÑÑÐ¸Ñ ÑепеÑÑ Ð²Ñегда бÑÐ´ÐµÑ Ð¾Ð±ÑÑвлÑÑÑ Ð¿ÐµÑеменнÑе $argc и $argv. </simpara> </listitem> <listitem> <simpara> ÐбÑÐµÐºÑ Ð±ÐµÐ· ÑвойÑÑв болÑÑе не ÑÑиÑаеÑÑÑ "пÑÑÑÑм". </simpara> </listitem> <listitem> <simpara> РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÐºÐ»Ð°ÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ð¾Ð±ÑÑвлен пеÑед иÑполÑзованием. ÐÑо пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑолÑко в Ñом ÑлÑÑае, еÑли иÑполÑзÑÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе новÑе ÑÑнкÑии PHP 5. ÐнаÑе поведение оÑÑаеÑÑÑ ÑÑаÑÑм. </simpara> </listitem> <listitem> <simpara> <function>get_class</function>, <function>get_parent_class</function> и <function>get_class_methods</function> ÑепеÑÑ Ð²Ð¾Ð·Ð²ÑаÑаÑÑ Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑов/меÑодов Ñак, как они бÑли обÑÑÐ²Ð»ÐµÐ½Ñ (Ñ ÑÑеÑом ÑегиÑÑÑа), ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к пÑоблемам Ñо ÑÑаÑÑми ÑкÑипÑами, коÑоÑÑе полагаÑÑÑÑ Ð½Ð° пÑежнее поведение (Ð¸Ð¼Ñ ÐºÐ»Ð°ÑÑа/меÑода вÑегда бÑло пÑиведено к Ð½Ð¸Ð¶Ð½ÐµÐ¼Ñ ÑегиÑÑÑÑ). ÐозможнÑм ÑеÑением ÑвлÑеÑÑÑ Ð¿Ð¾Ð¸Ñк ÑÑÐ¸Ñ ÑÑнкÑий в ваÑÐ¸Ñ ÑкÑипÑÐ°Ñ Ð¸ добавление пеÑед ними <function>strtolower</function>. </simpara> <simpara> ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¾ÑноÑиÑелÑно ÑегиÑÑÑозавиÑимоÑÑи Ñакже заÑÑагиваÑÑ <link linkend="language.constants.predefined">магиÑеÑкие конÑÑанÑÑ</link> <constant>__CLASS__</constant>, <constant>__METHOD__</constant> и <constant>__FUNCTION__</constant>. ÐнаÑÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð²ÑаÑаÑÑÑÑ Ð² именно Ñаком виде, в каком они обÑÐ²Ð»ÐµÐ½Ñ (Ñ ÑÑеÑом ÑегиÑÑÑа). </simpara> </listitem> <listitem> <simpara> <function>ip2long</function> ÑепеÑÑ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ &false;, а не <literal>-1</literal>, когда в каÑеÑÑве аÑгÑменÑа ÑÑнкÑии пеÑедаеÑÑÑ Ð½ÐµÐ¿ÑавилÑнÑй IP-адÑеÑ. </simpara> </listitem> <listitem> <simpara> ÐÑли во вклÑÑенном Ñайле обÑÑÐ²Ð»ÐµÐ½Ñ ÐºÐ°ÐºÐ¸Ðµ-либо ÑÑнкÑии, они могÑÑ Ð¸ÑполÑзоваÑÑÑÑ Ð¸ в главном Ñайле, вне завиÑимоÑÑи Ð¾Ñ Ñого, ÑаÑполагаÑÑÑÑ Ð¾Ð½Ð¸ до <function>return</function> или поÑле. ÐÑли Ñайл вклÑÑаеÑÑÑ Ð´Ð²Ð°Ð¶Ð´Ñ, PHP 5 генеÑиÑÑÐµÑ ÑаÑалÑнÑÑ Ð¾ÑибкÑ, Ñак как ÑÑнкÑии Ñже бÑли обÑÑвленÑ, в Ñо вÑемÑ, как PHP 4 не жалÑеÑÑÑ Ð½Ð° ÑÑо. РекомендÑеÑÑÑ Ð¸ÑполÑзоваÑÑ <function>include_once</function> вмеÑÑо пÑовеÑки, бÑл ли Ñже вклÑÑен Ñайл и ÑÑловного возвÑаÑа внÑÑÑи вклÑÑенного Ñайла. </simpara> </listitem> <listitem> <simpara> <function>include_once</function> и <function>require_once</function> ÑнаÑала ÑÑандаÑÑизиÑÑÑÑ Ð¿ÑÑÑ Ðº вклÑÑÐµÐ½Ð½Ð¾Ð¼Ñ ÑÐ°Ð¹Ð»Ñ Ð² Windows, Ñак ÑÑо пÑи вклÑÑении A.php и a.php Ñайл вклÑÑаеÑÑÑ ÑолÑко один Ñаз. </simpara> </listitem> </itemizedlist> <para> <example> <title><function>strrpos</function> и <function>strripos</function> ÑепеÑÑ Ð¸ÑполÑзÑÑÑ Ð²ÑÑ ÑÑÑÐ¾ÐºÑ ÐºÐ°Ðº needle</title> <programlisting role="php"> <![CDATA[ <?php var_dump(strrpos('ABCDEF','DEF')); //int(3) var_dump(strrpos('ABCDEF','DAF')); //bool(false) ?> ]]> </programlisting> </example> </para> <para> <example> <title>ÐбÑÐµÐºÑ Ð±ÐµÐ· ÑвойÑÑв болÑÑе не ÑÑиÑаеÑÑÑ "пÑÑÑÑм"</title> <programlisting role="php"> <![CDATA[ <?php class test { } $t = new test(); var_dump(empty($t)); // echo bool(false) if ($t) { // ÐÑÐ´ÐµÑ Ð²Ñполнено } ?> ]]> </programlisting> </example> </para> <para> <example> <title>РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÐºÐ»Ð°ÑÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ñ Ð¿ÐµÑед иÑполÑзованием</title> <programlisting role="php"> <![CDATA[ <?php //ÑабоÑÐ°ÐµÑ Ð±ÐµÐ· оÑибок: $a = new a(); class a { } //вÑзÑÐ²Ð°ÐµÑ Ð¾ÑибкÑ: $a = new b(); interface c{ } class b implements c { } ?> ]]> </programlisting> </example> </para> </section> <section id="migration5.cli-cgi"> <title>CLI и CGI</title> <para> Ð PHP 5 бÑли ÑÐ´ÐµÐ»Ð°Ð½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ð¸Ð¼ÐµÐ½Ð°Ñ Ð¸ÑполнÑемÑÑ Ñайлов CLI и CGI. Ð PHP 5, CGI-веÑÑÐ¸Ñ Ð±Ñла пеÑеименована в <filename>php-cgi.exe</filename> (Ñанее <filename>php.exe</filename>), а CLI-веÑÑÐ¸Ñ ÑепеÑÑ ÑаÑполагаеÑÑÑ Ð² главной диÑекÑоÑии (Ñанее <filename>cli/php.exe</filename>). </para> <para> Ð PHP 5 Ñакже поÑвилÑÑ Ð½Ð¾Ð²Ñй Ñежим: <filename>php-win.exe</filename>. Ðн ÑквиваленÑен CLI-веÑÑии, за иÑклÑÑением Ñого, ÑÑо php-win ниÑего не вÑÐ²Ð¾Ð´Ð¸Ñ Ð¸, ÑооÑвеÑÑвенно, не оÑкÑÑÐ²Ð°ÐµÑ ÐºÐ¾Ð½ÑÐ¾Ð»Ñ (окоÑко dos не поÑвлÑеÑÑÑ Ð½Ð° ÑкÑане). Такое поведение Ð¿Ð¾Ñ Ð¾Ð¶Ðµ на php-gtk. </para> <para> Ð PHP 5, CLI-веÑÑÐ¸Ñ Ð²Ñегда пÑедоÑÑавлÑÐµÑ Ð¿ÐµÑеменнÑе <varname>$argv</varname> и <varname>$argc</varname>, вне завиÑимоÑÑи Ð¾Ñ ÐºÐ°ÐºÐ¸Ñ -либо диÑекÑив в &php.ini;. Ðаже ÑÑÑановка <link linkend="ini.register-argc-argv">register_argc_argv</link> в <literal>off</literal> не повлиÑÐµÑ Ð½Ð° Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð½ÑеÑÑейÑа командной ÑÑÑоки. </para> <para> СмоÑÑиÑе Ñакже <link linkend="features.commandline">ÑпÑавоÑник по командной ÑÑÑоке</link>. </para> </section> <section id="migration5.configuration"> <title>ÐигÑаÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ Ñайлов</title> <para> Так как ISAPI-модÑли Ñменили Ñвои имена Ñ php4xxx на php5xxx, вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑоизвеÑÑи некоÑоÑÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ . Также пÑоизоÑли Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ð¸Ð¼ÐµÐ½Ð°Ñ Ñайлов CLI и CGI. ÐожалÑйÑÑа, обÑаÑиÑеÑÑ Ðº <link linkend="migration5.cli-cgi">ÑооÑвеÑÑÑвÑÑÑÐµÐ¼Ñ ÑазделÑ</link> Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии. </para> <para> ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑии Apache минималÑнÑ. ÐÑÐ¸Ð¼ÐµÑ Ð½Ð¸Ð¶Ðµ показÑÐ²Ð°ÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ, коÑоÑÑе вам ÑÑебÑеÑÑÑ Ð¿ÑоизвеÑÑи: <example> <title>ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ Apache пÑи мигÑаÑии на PHP 5</title> <programlisting role="apache-conf"> <![CDATA[ # замениÑе ÑÑÑ ÑÑÑокÑ: LoadModule php4_module /php/sapi/php4apache2.dll # на ÑÑÑ: LoadModule php5_module /php/php5apache2.dll ]]> </programlisting> </example> </para> <para> ÐÑли Ð²Ð°Ñ Ð²ÐµÐ±-ÑеÑÐ²ÐµÑ ÑабоÑÐ°ÐµÑ Ñ PHP в CGI-Ñежиме, Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾Ð±ÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на Ñо, ÑÑо CGI-веÑÑÐ¸Ñ Ñменила Ñвое Ð¸Ð¼Ñ Ñ <filename>php.exe</filename> на <filename>php-cgi.exe</filename>. Ð Apache вам нÑжно пÑоизвеÑÑи подобнÑе изменениÑ: <example> <title>ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² конÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ Apache пÑи мигÑаÑии на PHP 5, CGI-Ñежим</title> <programlisting role="apache-conf"> <![CDATA[ # замениÑе ÑÑÑ ÑÑÑокÑ: Action application/x-httpd-php "/php/php.exe" # на ÑÑÑ: Action application/x-httpd-php "/php/php-cgi.exe" ]]> </programlisting> </example> </para> <para> ÐÑи иÑполÑзовании дÑÑÐ³Ð¸Ñ Ð²ÐµÐ±-ÑеÑвеÑов вам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑмениÑÑ Ð»Ð¸Ð±Ð¾ Ð¸Ð¼Ñ CGI, либо Ð¸Ð¼Ñ ISAPI модÑлей. </para> </section> <section id="migration5.functions"> <title>ÐовÑе ÑÑнкÑии</title> <para> Ð PHP 5 поÑвилоÑÑ Ð½ÐµÐºÐ¾ÑоÑое колиÑеÑÑво новÑÑ ÑÑнкÑий. ÐÐ¾Ñ Ð¸Ñ ÑпиÑок: </para> <para><link linkend="ref.array">ÐаÑÑивÑ</link>:</para> <itemizedlist> <listitem> <simpara> <function>array_combine</function> - Ð¡Ð¾Ð·Ð´Ð°ÐµÑ Ð¼Ð°ÑÑив, иÑполÑзÑÑ Ð¾Ð´Ð¸Ð½ маÑÑив Ð´Ð»Ñ ÐºÐ»ÑÑей, а дÑÑгой - Ð´Ð»Ñ Ð¸Ñ Ð·Ð½Ð°Ñений </simpara> </listitem> <listitem> <simpara> <function>array_diff_uassoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов, пÑоизводимой заданной полÑзоваÑелем ÑÑнкÑией обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_udiff</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов, иÑполÑзÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑаÑного вÑзова Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>array_udiff_assoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_udiff_uassoc</function> - ÐÑÑиÑлÑÐµÑ ÑазлиÑие маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова. ÐÑовеÑка индекÑов Ñакже пÑоизводиÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_walk_recursive</function> - ÐÑимениÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкÑÑ ÑÑнкÑÐ¸Ñ ÑекÑÑÑивно к ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ Ð¼Ð°ÑÑива </simpara> </listitem> <listitem> <simpara> <function>array_uintersect_assoc</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_uintersect_uassoc</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной пÑовеÑкой индекÑов. Ðак даннÑе, Ñак и индекÑÑ ÑÑавниваÑÑÑÑ Ð¿Ñи помоÑи ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> <listitem> <simpara> <function>array_uintersect</function> - ÐÑÑиÑлÑÐµÑ Ð¿ÐµÑеÑеÑение маÑÑивов. ÐаннÑе ÑÑавниваÑÑÑÑ Ñ Ð¸ÑполÑзованием ÑÑнкÑии обÑаÑного вÑзова </simpara> </listitem> </itemizedlist> <para><link linkend="ref.ibase">InterBase</link>:</para> <itemizedlist> <listitem> <simpara> <function>ibase_affected_rows</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво запиÑей, заÑÑонÑÑÑÑ Ð¿ÑедÑдÑÑим запÑоÑом </simpara> </listitem> <listitem> <simpara> <function>ibase_backup</function> - ÐниÑииÑÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ ÑезеÑвного копиÑование в менеджеÑе ÑеÑвиÑов и ÑÑÐ°Ð·Ñ Ð¶Ðµ возвÑаÑÐ°ÐµÑ ÑпÑавление </simpara> </listitem> <listitem> <simpara> <function>ibase_commit_ret</function> - ФикÑиÑÑÐµÑ ÑÑанзакÑиÑ, не закÑÑÐ²Ð°Ñ ÐµÐµ </simpara> </listitem> <listitem> <simpara> <function>ibase_db_info</function> - ÐапÑоÑиÑÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_drop_db</function> - УдалÑÐµÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_errcode</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð´ оÑибки </simpara> </listitem> <listitem> <simpara> <function>ibase_free_event_handler</function> - ÐÑменÑÐµÑ Ð·Ð°ÑегиÑÑÑиÑованнÑй обÑабоÑÑик ÑобÑÑÐ¸Ñ </simpara> </listitem> <listitem> <simpara> <function>ibase_gen_id</function> - ÐнкÑеменÑиÑÑÐµÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñй генеÑаÑÐ¾Ñ Ð¸ возвÑаÑÐ°ÐµÑ ÐµÐ³Ð¾ новое знаÑение </simpara> </listitem> <listitem> <simpara> <function>ibase_maintain_db</function> - ÐÑполнÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿Ð¾Ð´Ð´ÐµÑжки на ÑеÑвеÑе баз даннÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_name_result</function> - ÐÑиÑÐ²Ð°Ð¸Ð²Ð°ÐµÑ Ð¸Ð¼Ñ Ð½Ð°Ð±Ð¾ÑÑ ÑезÑлÑÑаÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_num_params</function> - ÐозвÑаÑÐ°ÐµÑ ÑиÑло паÑамеÑÑов в подгоÑовленном запÑоÑе </simpara> </listitem> <listitem> <simpara> <function>ibase_param_info</function> - ÐозвÑаÑÐ°ÐµÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ паÑамеÑÑе в подгоÑовленном запÑоÑе </simpara> </listitem> <listitem> <simpara> <function>ibase_restore</function> - ÐниÑииÑÑÐµÑ Ð·Ð°Ð´Ð°ÑÑ Ð²Ð¾ÑÑÑановление в менеджеÑе ÑеÑвиÑов и ÑÑÐ°Ð·Ñ Ð¶Ðµ возвÑаÑÐ°ÐµÑ ÑпÑавление </simpara> </listitem> <listitem> <simpara> <function>ibase_rollback_ret</function> - ÐÑкаÑиÑÑ ÑÑанзакÑÐ¸Ñ Ð¸ запомниÑÑ ÐµÐµ конÑекÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_server_info</function> - ÐапÑÑÐ¸Ð²Ð°ÐµÑ ÑÑаÑиÑÑÐ¸ÐºÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </simpara> </listitem> <listitem> <simpara> <function>ibase_service_attach</function> - СоединиÑÑÑÑ Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑом ÑеÑвиÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_service_detach</function> - РазоÑваÑÑ Ñоединение Ñ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑом ÑеÑвиÑов </simpara> </listitem> <listitem> <simpara> <function>ibase_set_event_handler</function> - ÐаÑегиÑÑÑиÑоваÑÑ ÑÑнкÑÐ¸Ñ Ð¾Ð±ÑаÑного вÑзова, коÑоÑÐ°Ñ Ð²ÑзÑваеÑÑÑ Ð¿Ñи пÑбликаÑии ÑобÑÑÐ¸Ñ </simpara> </listitem> <listitem> <simpara> <function>ibase_wait_event</function> - ÐдаÑÑ ÑобÑÑиÑ, оÑпÑавленного базой даннÑÑ </simpara> </listitem> </itemizedlist> <para><link linkend="ref.iconv">iconv</link>:</para> <itemizedlist> <listitem> <simpara> <function>iconv_mime_decode</function> - ÐекодиÑÑÐµÑ Ð¿Ð¾Ð»Ðµ MIME-заголовка </simpara> </listitem> <listitem> <simpara> <function>iconv_mime_decode_headers</function> - ÐекодиÑÑÐµÑ ÑÑÐ°Ð·Ñ Ð½ÐµÑколÑко полей MIME-заголовков </simpara> </listitem> <listitem> <simpara> <function>iconv_mime_encode</function> - СоÑÑавлÑÐµÑ Ð¿Ð¾Ð»Ðµ MIME-заголовка </simpara> </listitem> <listitem> <simpara> <function>iconv_strlen</function> - ÐозвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñимволов в ÑÑÑоке </simpara> </listitem> <listitem> <simpara> <function>iconv_strpos</function> - ÐÐ°Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿ÐµÑвого Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ needle внÑÑÑи haystack </simpara> </listitem> <listitem> <simpara> <function>iconv_strrpos</function> - ÐÐ°Ñ Ð¾Ð´Ð¸Ñ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ Ð¿Ð¾Ñледнего Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ needle внÑÑÑи Ñказанного ÑÑда haystack </simpara> </listitem> <listitem> <simpara> <function>iconv_substr</function> - ÐÑÑезаÑÑ ÑаÑÑÑ ÑÑÑоки </simpara> </listitem> </itemizedlist> <para><link linkend="ref.stream">ÐоÑоки</link>:</para> <itemizedlist> <listitem> <simpara> <function>stream_copy_to_stream</function> - ÐопиÑÑÐµÑ Ð´Ð°Ð½Ð½Ñе Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ поÑока на дÑÑгой </simpara> </listitem> <listitem> <simpara> <function>stream_get_line</function> - ÐолÑÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¸Ð· заданного ÑеÑÑÑÑа поÑока до данного ÑазделиÑÐµÐ»Ñ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_accept</function> - РазÑеÑиÑÑ Ñоединение на ÑокеÑ, ÑозданнÑй <function>stream_socket_server</function> </simpara> </listitem> <listitem> <simpara> <function>stream_socket_client</function> - ÐÑкÑÑÑÑ Internet или Unix domain ÑÐ¾ÐºÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_get_name</function> - ÐолÑÑиÑÑ Ð¸Ð¼Ñ Ð»Ð¾ÐºÐ°Ð»ÑнÑÑ Ð¸Ð»Ð¸ ÑдаленнÑÑ ÑокеÑов </simpara> </listitem> <listitem> <simpara> <function>stream_socket_recvfrom</function> - ÐолÑÑÐ°ÐµÑ Ð´Ð°Ð½Ð½Ñе Ð¾Ñ ÑокеÑа, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑоизведено Ñоединение или Ð½ÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_sendto</function> - ÐоÑÑÐ»Ð°ÐµÑ ÑообÑение ÑокеÑÑ, вне завиÑимоÑÑи Ð¾Ñ Ñого, пÑоизведено Ñоединение или Ð½ÐµÑ </simpara> </listitem> <listitem> <simpara> <function>stream_socket_server</function> - СоздаÑÑ Internet или или Unix domain ÑÐ¾ÐºÐµÑ Ð½Ð° ÑÑоÑоне ÑеÑвеÑа </simpara> </listitem> </itemizedlist> <para><link linkend="ref.datetime">СвÑзаннÑе Ñ Ð´Ð°Ñой и вÑеменем</link>:</para> <itemizedlist> <listitem> <simpara> <function>idate</function> - ФоÑмаÑиÑÑÐµÑ Ð»Ð¾ÐºÐ°Ð»Ñное вÑемÑ/даÑÑ ÐºÐ°Ðº integer </simpara> </listitem> <listitem> <simpara> <function>date_sunset</function> - ÐÑÐµÐ¼Ñ Ð·Ð°Ñ Ð¾Ð´Ð° ÑолнÑа Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð½Ñ Ð¸ меÑÑоÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>date_sunrise</function> - ÐÑÐµÐ¼Ñ Ð²Ð¾ÑÑ Ð¾Ð´Ð° ÑолнÑа Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ Ð´Ð½Ñ Ð¸ меÑÑоÑаÑÐ¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>time_nanosleep</function> - ÐадеÑжка на заданное ÑиÑло ÑекÑнд и наноÑекÑнд </simpara> </listitem> </itemizedlist> <para><link linkend="ref.strings">СÑÑоки</link>:</para> <itemizedlist> <listitem> <simpara> <function>str_split</function> - ÐÑеобÑазоваÑÑ ÑÑÑÐ¾ÐºÑ Ð² маÑÑив </simpara> </listitem> <listitem> <simpara> <function>strpbrk</function> - ÐоиÑк лÑбого набоÑа Ñимволов в ÑÑÑоке </simpara> </listitem> <listitem> <simpara> <function>substr_compare</function> - ÐезопаÑное Ð´Ð»Ñ Ð±Ð¸Ð½Ð°ÑнÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð¿ÑионалÑно ÑегиÑÑÑозавиÑимое ÑÑавнение двÑÑ ÑÑÑок, наÑÐ¸Ð½Ð°Ñ Ñ offset и до length Ñимволов </simpara> </listitem> </itemizedlist> <para>ÐÑÑгие:</para> <itemizedlist> <listitem> <simpara> <function>convert_uudecode</function> - декодиÑÑÐµÑ ÑÑÑокÑ, закодиÑованнÑÑ uuencode </simpara> </listitem> <listitem> <simpara> <function>convert_uuencode</function> - кодиÑÑÐµÑ ÑÑÑÐ¾ÐºÑ Ð² uuencode </simpara> </listitem> <listitem> <simpara> <function>curl_copy_handle</function> - ÐопиÑоваÑÑ Ð´ÐµÑкÑипÑÐ¾Ñ cURL вмеÑÑе Ñо вÑеми его наÑÑÑойками </simpara> </listitem> <listitem> <simpara> <function>dba_key_split</function> - Ð Ð°Ð·Ð±Ð¸Ð²Ð°ÐµÑ ÐºÐ»ÑÑ Ð² ÑÑÑоковом пÑедÑÑавлении в пÑедÑÑавление маÑÑива </simpara> </listitem> <listitem> <simpara> <function>dbase_get_header_info</function> - ÐолÑÑÐ°ÐµÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾ÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ dBase </simpara> </listitem> <listitem> <simpara> <function>dbx_fetch_row</function> - ÐÑбиÑÐ°ÐµÑ Ð·Ð°Ð¿Ð¸Ñи из ÑезÑлÑÑаÑа запÑоÑа, в коÑоÑом ÑÑÑановлен Ñлаг DBX_RESULT_UNBUFFERED </simpara> </listitem> <listitem> <simpara> <function>fbsql_set_password</function> - СмениÑÑ Ð¿Ð°ÑÐ¾Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ полÑзоваÑÐµÐ»Ñ </simpara> </listitem> <listitem> <simpara> <function>file_put_contents</function> - ÐапиÑÑ ÑÑÑоки в Ñайл </simpara> </listitem> <listitem> <simpara> <function>ftp_alloc</function> - ÐÑделÑÐµÑ Ð¼ÐµÑÑо Ð´Ð»Ñ Ð·Ð°Ð³ÑÑжаемого Ñайла </simpara> </listitem> <listitem> <simpara> <function>get_declared_interfaces</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив вÑÐµÑ Ð¾Ð±ÑÑвленнÑÑ Ð¸Ð½ÑеÑÑейÑов </simpara> </listitem> <listitem> <simpara> <function>get_headers</function> - ÐÑбиÑÐ°ÐµÑ Ð²Ñе заголовки, поÑланнÑе ÑеÑвеÑом в оÑÐ²ÐµÑ Ð½Ð° HTTP-запÑÐ¾Ñ </simpara> </listitem> <listitem> <simpara> <function>headers_list</function> - ÐозвÑаÑÐ°ÐµÑ ÑпиÑок поÑланнÑÑ (или гоÑовÑÑ Ðº оÑпÑавке) заголовков оÑвеÑа </simpara> </listitem> <listitem> <simpara> <function>http_build_query</function> - ÐенеÑиÑÑÐµÑ URL-кодиÑованнÑÑ ÑÑÑÐ¾ÐºÑ Ð·Ð°Ð¿ÑоÑа </simpara> </listitem> <listitem> <simpara> <function>image_type_to_extension</function> - ÐолÑÑиÑÑ ÑаÑÑиÑение Ñайла Ð´Ð»Ñ Ñипа изобÑажениÑ, возвÑаÑенного <function>getimagesize</function>, <function>exif_read_data</function>, <function>exif_thumbnail</function>, <function>exif_imagetype</function> </simpara> </listitem> <listitem> <simpara> <function>imagefilter</function> - ÐÑименÑÐµÑ ÑилÑÑÑ Ð¸Ð·Ð¾Ð±ÑажениÑ, иÑполÑзÑÑ Ð²ÑбÑаннÑÑ ÑÐ°Ð·Ñ </simpara> </listitem> <listitem> <simpara> <function>imap_getacl</function> - ÐолÑÑÐ°ÐµÑ ACL Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ поÑÑового ÑÑика </simpara> </listitem> <listitem> <simpara> <function>ldap_sasl_bind</function> - ÐÑивÑзаÑÑ Ðº LDAP-диÑекÑоÑии иÑполÑзÑÑ SASL </simpara> </listitem> <listitem> <simpara> <function>mb_list_encodings</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив вÑÐµÑ Ð¿Ð¾Ð´Ð´ÐµÑживаемÑÑ ÐºÐ¾Ð´Ð¸Ñовок </simpara> </listitem> <listitem> <simpara> <function>pcntl_getpriority</function> - ÐолÑÑÐ°ÐµÑ Ð¿ÑиоÑиÑÐµÑ Ð»Ñбого пÑоÑеÑÑа </simpara> </listitem> <listitem> <simpara> <function>pcntl_wait</function> - ÐÐ´ÐµÑ Ð¸Ð»Ð¸ возвÑаÑÐ°ÐµÑ ÑÑаÑÑÑ Ð´Ð¾ÑеÑнего ÑазвеÑвленного пÑоÑеÑÑа в завиÑимоÑÑи Ð¾Ñ Ð¾Ð±ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑиÑÑемного вÑзова waitpid() </simpara> </listitem> <listitem> <simpara> <function>pg_version</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñ Ð¸Ð½ÑоÑмаÑией о веÑÑии клиенÑа, пÑоÑокола и ÑеÑвеÑа (еÑли доÑÑÑпно) </simpara> </listitem> <listitem> <simpara> <function>php_check_syntax</function> - ÐÑовеÑиÑÑ ÑинÑакÑÐ¸Ñ Ñказанного Ñайла </simpara> </listitem> <listitem> <simpara> <function>php_strip_whitespace</function> - ÐозвÑаÑÐ°ÐµÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй код Ñ ÑдаленнÑми комменÑаÑиÑми и пÑобелами </simpara> </listitem> <listitem> <simpara> <function>proc_nice</function> - СмениÑÑ Ð¿ÑиоÑиÑÐµÑ ÑекÑÑего пÑоÑеÑÑа </simpara> </listitem> <listitem> <simpara> <function>pspell_config_data_dir</function> - СмениÑÑ ÑаÑположение Ñайлов даннÑÑ ÑзÑка </simpara> </listitem> <listitem> <simpara> <function>pspell_config_dict_dir</function> - СмениÑÑ ÑаÑположение оÑновного ÑпиÑка Ñлов </simpara> </listitem> <listitem> <simpara> <function>setrawcookie</function> - ÐоÑÑÐ»Ð°ÐµÑ cookie без кодиÑÐ¾Ð²Ð°Ð½Ð¸Ñ url знаÑÐµÐ½Ð¸Ñ </simpara> </listitem> <listitem> <simpara> <function>snmp_read_mib</function> - ЧиÑÐ°ÐµÑ Ð¸ анализиÑÑÐµÑ MIB-Ñайл в акÑивное MIB-деÑево </simpara> </listitem> <listitem> <simpara> <function>sqlite_fetch_column_types</function> - ÐозвÑаÑÐ°ÐµÑ Ð¼Ð°ÑÑив Ñипов ÑÑолбÑов Ð´Ð»Ñ Ð¾ÑделÑной ÑаблиÑÑ </simpara> </listitem> </itemizedlist> <note> <para> ÐодÑÐ»Ñ <link linkend="ref.tidy">Tidy</link> полноÑÑÑÑ Ñменил Ñвой API. </para> </note> </section> <section id="migration5.newconf"> <title>ÐовÑе диÑекÑивÑ</title> <para> Ð PHP 5 поÑвилоÑÑ Ð½ÐµÑколÑко диÑекÑив &php.ini;. ÐÐ¾Ñ Ð¸Ñ ÑпиÑок: </para> <itemizedlist> <listitem> <simpara> mail.force_extra_parameters - ÐÑинÑдиÑелÑно добавиÑÑ ÑказаннÑе паÑамеÑÑÑ Ðº ÑпиÑÐºÑ Ð¿ÐµÑедаваемÑÑ Ð¸ÑполнÑÐµÐ¼Ð¾Ð¼Ñ ÑÐ°Ð¹Ð»Ñ sendmail. ÐÑи паÑамеÑÑÑ Ð²Ñегда бÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÑÑ Ð·Ð½Ð°Ñение пÑÑого паÑамеÑÑа <function>mail</function>, даже в заÑиÑенном Ñежиме </simpara> </listitem> <listitem> <simpara> <link linkend="ini.register-long-arrays">register_long_arrays</link> - позволиÑÑ/запÑеÑиÑÑ PHP ÑегиÑÑÑиÑоваÑÑ ÑÑÑаÑевÑие длиннÑе маÑÑÐ¸Ð²Ñ $HTTP_*_VARS </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.hash-function">session.hash_function</link> - вÑбÑаÑÑ Ñ ÑÑ-ÑÑнкÑÐ¸Ñ (MD5 или SHA-1) </simpara> </listitem> <listitem> <simpara> <link linkend="ini.session.hash-bits-per-character">session.hash_bits_per_character</link> - обÑÑвиÑÑ, ÑколÑко биÑов биÑов Ñ ÑаниÑÑÑ Ð² каждом Ñимволе пÑи конвеÑÑаÑии даннÑÑ Ð±Ð¸Ð½Ð°Ñного Ñ ÑÑа во ÑÑо-Ñо ÑиÑабелÑное (Ñ 4 до 6) </simpara> </listitem> <listitem> <simpara> <link linkend="ini.zend.ze1-compatibility-mode">zend.ze1_compatibility_mode</link> - вклÑÑиÑÑ Ñежим ÑовмеÑÑимоÑÑи Ñ Zend Engine 1 (PHP 4) </simpara> </listitem> </itemizedlist> </section> <section id="migration5.databases"> <title>ÐÐ°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ </title> <para> Ð PHP 5 бÑли пÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ñ Ð½ÐµÐºÐ¾ÑоÑÑе изменениÑ, каÑаÑÑиеÑÑ Ð¡Ð£ÐÐ (MySQL и SQLite). </para> <para> Ð PHP 5 клиенÑÑкие библиоÑеки MySQL не поÑÑавлÑÑÑÑÑ Ð² комплекÑе из-за лиÑензионнÑÑ Ð¸ некоÑоÑÑÑ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ñоблем. ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии ÑиÑайÑе <link linkend="faq.databases.mysql.php5">запиÑÑ Ð² FAQ</link>. </para> <para> Также пÑиÑÑÑÑÑвÑÐµÑ Ð½Ð¾Ð²Ñй модÑлÑ, <link linkend="ref.mysqli">MySQLi (Improved MySQL)</link>, ÑпÑоекÑиÑованнÑй Ð´Ð»Ñ ÑабоÑÑ Ñ MySQL 4.1 и вÑÑе. </para> <para> ÐаÑÐ¸Ð½Ð°Ñ Ñ PHP 5, модÑÐ»Ñ <link linkend="ref.sqlite">SQLite</link> вÑÑÑоен в PHP. SQLite - ÑÑо вÑÑÑÐ°Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ SQL СУÐÐ, а не клиенÑÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека Ð´Ð»Ñ ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑеÑвеÑом баз даннÑÑ (Ñаким как MySQL или PostgreSQL). ÐиблиоÑека SQLite ÑиÑÐ°ÐµÑ Ð¸ запиÑÑÐ²Ð°ÐµÑ Ð½Ð°Ð¿ÑÑмÑÑ Ð² и из Ñайлов Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° диÑке. </para> </section> <section id='migration5.oop'> <title>ÐÐ¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ ÐоделÑ</title> <para> Ð PHP 5 поÑвилаÑÑ Ð½Ð¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ ÐоделÑ. РабоÑа Ñ Ð¾Ð±ÑекÑами в PHP бÑла полноÑÑÑÑ Ð¿ÐµÑепиÑана, позволÑÑ Ð´Ð¾ÑÑигнÑÑÑ Ð»ÑÑÑей пÑоизводиÑелÑноÑÑи и пÑедоÑÑавлÑÑ Ð½Ð¾Ð²Ñе возможноÑÑи. РпÑедÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ PHP ÑабоÑа Ñ Ð¾Ð±ÑекÑами пÑоизводилаÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸Ñно пÑимиÑивнÑм Ñипам (к пÑимеÑÑ, integer и string). ÐедоÑÑаÑком ÑÑого меÑода ÑвлÑлоÑÑ Ñо, ÑÑо ÑеманÑиÑеÑки веÑÑ Ð¾Ð±ÑÐµÐºÑ ÐºÐ¾Ð¿Ð¸ÑовалÑÑ Ð¿Ñи пÑиÑвоении пеÑеменной или пеÑедаÑи ее в каÑеÑÑве паÑамеÑÑа ÑÑнкÑии. ÐÑи новом Ð¿Ð¾Ð´Ñ Ð¾Ð´Ðµ на обÑекÑÑ ÑÑÑлаÑÑÑÑ Ð¿Ð¾ деÑкÑипÑоÑÑ, а не по знаÑÐµÐ½Ð¸Ñ (деÑкÑипÑÐ¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑедÑÑавиÑÑ Ñебе как иденÑиÑикаÑÐ¾Ñ Ð¾Ð±ÑекÑа). </para> <para> Ðногие PHP-пÑогÑаммиÑÑÑ Ð´Ð°Ð¶Ðµ не в кÑÑÑе Ñ Ð¸ÑÑоÑÑей Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð² ÑÑаÑой обÑекÑной модели, ÑÑо ознаÑаеÑ, ÑÑо болÑÑинÑÑво из PHP-пÑиложений бÑдÑÑ ÑабоÑаÑÑ Ð»Ð¸Ð±Ð¾ вовÑе безо вÑÑÐºÐ¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹, либо Ñ ÑовÑем неболÑÑими изменениÑми. </para> <para> ÐÐ¾Ð²Ð°Ñ ÐбÑекÑÐ½Ð°Ñ Ð¼Ð¾Ð´ÐµÐ»Ñ Ð·Ð°Ð´Ð¾ÐºÑменÑиÑована в <link linkend="language.oop5">СпÑавоÑнике по ÑзÑкÑ</link>. </para> <para> ÐбÑаÑиÑе внимание Ñакже на диÑекÑÐ¸Ð²Ñ <link linkend="ini.zend.ze1-compatibility-mode"> zend.ze1_compatibility_mode</link> Ð´Ð»Ñ ÑовмеÑÑимоÑÑи Ñ PHP 4. </para> </section> <section id='migrating5.errorrep'> <title>СообÑÐµÐ½Ð¸Ñ Ð¾Ð± оÑÐ¸Ð±ÐºÐ°Ñ </title> <para> ÐаÑÐ¸Ð½Ð°Ñ Ñ PHP 5 бÑл обÑÑвлен новÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾Ñибок - E_STRICT Ñо знаÑением 2048. Ðн позволÑÐµÑ PHP даваÑÑ ÑовеÑÑ Ð¿Ð¾ ÑпоÑобноÑÑи взаимодейÑÑÐ²Ð¸Ñ Ð¸ бÑдÑÑей ÑовмеÑÑимоÑÑи ваÑего кода, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²Ð°Ð¼ пÑидеÑживаÑÑÑÑ Ð½Ð°Ð¸Ð»ÑÑÑего меÑода напиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð´Ð°. Т.е. ÑообÑение ÑÑÐ¾Ð²Ð½Ñ E_STRICT пÑедÑпÑÐµÐ´Ð¸Ñ Ð²Ð°Ñ, еÑли Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ ÑÑÑаÑевÑие ÑÑнкÑии, коÑоÑÑе в бÑдÑÑем бÑдÑÑ ÑдаленÑ. </para> <note> <simpara> E_ALL не вклÑÑÐ°ÐµÑ E_STRICT, Ñак ÑÑо по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÐ¾Ñ ÑÑÐ¾Ð²ÐµÐ½Ñ Ð¾Ñибок вÑклÑÑен </simpara> </note> </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 -->