cvs: peardoc /ru/core db.xml http.xml pear.xml
| From: | Vitaliy N. Kravchenko | Date: | Tue, 15 Jan 2002 13:51:34 +0000 |
| Subject: | cvs: peardoc /ru/core db.xml http.xml pear.xml | ||
| Groups: | php.pear.cvs | ||
| Request: | Send a blank email to pear-cvs+get-1953@lists.php.net to get a copy of this message | ||
kvn Tue Jan 15 08:51:34 2002 EDT
Added files:
/peardoc/ru/core db.xml http.xml pear.xml
Log:
Let's go.
Index: peardoc/ru/core/db.xml +++ peardoc/ru/core/db.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="core.db"> <title>PEAR DB: ÕÎÉÆÉÃÉÒÏ×ÁÎÎÙÊ API ÄÌÑ ÄÏÓÔÕÐÁ Ë SQL-ÂÁÚÁÍ ÄÁÎÎÙÈ</title> <titleabbrev>PEAR DB</titleabbrev> <partintro> <simpara> üÔÏÔ ÒÁÚÄÅÌ ÏÐÉÓÙ×ÁÅÔ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ PEAR ÁÂÓÔÒÁËÔÎÙÊ ÓÌÏÊ ÄÌÑ ÄÏÓÔÕÐÁ Ë âä. PEAR database abstraction layer. </simpara> </partintro> <refentry id="core.db.dsn"> <refnamediv> <refname>DSN</refname> <refpurpose>äÁÎÎÙÅ Ï ÉÓÔÏÞÎÉËÅ (data source name)</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> äÌÑ ÓÏÅÄÉÎÅÎÉÑ Ó âä ÞÅÒÅÚ PEAR::DB, ×Ù ÄÏÌÖÎÙ ÐÒÏÐÉÓÁÔØ ËÏÒÒÅËÔÎÏÙÅ <acronym>ÄÁÎÎÙÅ Ï ÉÓÔÏÞÎÉËÅ (DSN)</acronym>. DSN ÓÏÓÔÏÉÔ ÉÚ ÓÌÅÄÕÀÝÉÈ ÞÁÓÔÅÊ, </simpara> <para> <simplelist> <member> <parameter>phptype</parameter>: ôÉÐ âä ÉÓÐÏÌØÚÕÅÍÙÊ × PHP (ÎÁÐÒ. mysql, odbc É Ô.Ä.) </member> <member> <parameter>dbsyntax</parameter>: Database used with regards to SQL syntax etc. </member> <member> <parameter>protocol</parameter>: ðÒÏÔÏËÏÌ ÓÏÅÄÉÎÅÎÉÑ (ÎÁÐÒ. tcp, unix). </member> <member> <parameter>hostspec</parameter>: óÐÅÃÉÆÉËÁÃÉÑ ÓÅÒ×ÅÒÁ (ÉÍÑ_ÓÅÒ×ÅÒÁ[:ÐÏÒÔ]) </member> <member> <parameter>database</parameter>: îÁÚ×ÁÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ, Ó ËÏÔÏÒÏÊ ×Ù ÈÏÔÉÔÅ ÒÁÂÏÔÁÔØ ÎÁ óõâä. </member> <member> <parameter>username</parameter>: éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÌÏÇÉÎÁ. </member> <member> <parameter>password</parameter>: ðÁÒÏÌØ ÄÌÑ ÌÏÇÉÎÁ. </member> </simplelist> </para> <para> æÏÒÍÁÔ ÐÏÌÎÏÊ ÆÏÒÍÙ DSN: <programlisting role="url"> phptype(dbsyntax)://username:password@protocol+hostspec/database </programlisting> ÷ÁÒÉÁÃÉÉ: <programlisting role="url"> phptype://username:password@protocol+hostspec:110//usr/db_file.db phptype://username:password@hostspec/database_name phptype://username:password@hostspec phptype://username@hostspec phptype://hostspec/database phptype://hostspec phptype(dbsyntax) phptype </programlisting> îÁ ÔÅËÕÝÉÊ ÍÏÍÅÎÔ ÐÏÄÄÅÒÖÕÀÔÓÑ ÓÌÅÄÕÀÝÉÅ âä: <programlisting role="configure"> mysql -> MySQL pgsql -> PostgreSQL ibase -> InterBase msql -> Mini SQL mssql -> Microsoft SQL Server oci8 -> Oracle 7/8/8i odbc -> ODBC (Open Database Connectivity) sybase -> SyBase ifx -> Informix fbsql -> FrontBase </programlisting> </para> <para> <warning id="core.db.features.warning"> <title>÷ÁÖÎÏ!</title> <para> úÁÍÅÔØÔÅ, ÞÔÏ ÎÅËÏÔÏÒÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÍÏÇÕÔ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÔØÓÑ ×ÓÅÍÉ óõâä. ïÂÒÁÔÉÔÅÓØ ÐÏÖÁÌÕÊÓÔÁ Ë ÄÏËÕÍÅÎÔÕ ÓÔÁÔÕÓÁ PEAR DB ÒÁÓÛÉÒÅÎÉÊ, ËÏÔÏÒÙÊ ÒÁÚÍÅÝÅÎ: <quote><pear base dir>/DB/STATUS</quote> ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÄÅÔÁÌØÎÏÇÏ ÓÐÉÓËÁ Ï ÔÏÍ ËÁËÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÐÏÄÄÅÒÖÉ×ÁÀÔØÓÑ ËÁÖÄÏÊ ÉÚ óõâä. </para> </warning> </para> </refsect1> </refentry> <refentry id="core.db.connect"> <refnamediv> <refname>Connect</refname> <refpurpose>óÏÅÄÉÎÅÎÉÅ É ÏÔÓÏÅÄÉÎÅÎÉÅ ÏÔ âä.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> äÌÑ ÓÏÅÄÉÎÅÎÉÑ Ó ÂÁÚÏÊ ÄÁÎÎÙÈ ×Ù ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÕÎËÃÉÀ <function>DB::connect</function>, ËÏÔÏÒÁÑ ÔÒÅÂÕÅÔ ÐÒÁ×ÉÌØÎÙÊ <link linkend="core.db.dsn">DSN</link> ËÁË ÐÁÒÁÍÅÔÒ É ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÐÁÒÁÍÅÔÒ (ÂÕÌÅ×ÙÊ), ËÏÔÏÒÙÊ ÏÐÒÅÄÅÌÑÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÕÓÔÏÊÞÉ×ÏÅ (persistent) ÓÏÅÄÉÎÅÎÉÅ ÉÌÉ ÎÅÔ. ÷ ÓÌÕÞÁÅ ÎÏÒÍÁÌØÎÏÇÏ ÓÏÅÄÉÎÅÎÉÑ ×Ù ÐÏÌÕÞÉÔÅ ÜËÚÅÍÐÌÑÒ ËÌÁÓÓÁ âä. îÁÓÔÏÑÔÅÌØÎÏ ÒÅËÕÍÅÎÄÕÅÔØÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÒÏ×ÅÒËÉ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ ÆÕÎËÃÉÀ <function>DB::isError</function>. äÌÑ ÏÔÓÏÅÄÉÎÅÎÉÑ ÏÔ âä ÉÓÐÏÌØÚÕÊÔÅ ÍÅÔÏÄ <function>disconnect</function> ÜËÚÅÍÐÌÑÒÁ ×ÁÛÅÇÏ ËÌÁÓÓÁ âä. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php require_once 'DB.php'; $user = 'foo'; $pass = 'bar'; $host = 'localhost'; $db_name = 'clients_db'; // Data Source Name: üÔÏ ÕÎÉ×ÅÒÓÁÌØÎÁÑ ÓÔÒÏËÁ ÓÏÅÄÉÎÅÎÉÑ. $dsn = "mysql://$user:$pass@$host/$db_name"; // DB::connect ×ÏÚ×ÒÁÔÉÔ DB ÏÂßÅËÔ ÐÒÉ ÕÄÁÞÎÏÍ ÓÏÅÄÉÎÅÎÉÉ // ÉÌÉ PEAR DB Error ÏÂßÅËÔ ÐÒÉ ÏÛÉÂËÅ. $db = DB::connect($dsn, true); // áÌØÔÅÒÎÁÔÉ×Á: $db = DB::connect($dsn); // ó ÐÏÍÏÝØÀ DB::isError ×Ù ÍÏÖÅÔÅ ÏÔÌÉÞÉÔØ ÏÛÉÂËÕ ÏÔ // ÎÏÒÍÁÌØÎÏÇÏ ÓÏÅÄÉÎÅÎÉÑ. if (DB::isError($db)) { die ($db->getMessage()); } .... // ÷Ù ÍÏÖÅÔÅ ÏÔÓÏÅÄÉÎÉÔØÓÑ ÏÔ ÂÁÚÙ Ó ÐÏÍÏÝØÀ: $db->disconnect(); ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.query"> <refnamediv> <refname>Query</refname> <refpurpose>÷ÙÐÏÌÎÅÎÉÅ ÚÁÐÒÏÓÏ× Ë ÂÁÚÅ ÄÁÎÎÙÈ.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> þÔÏÂÙ ×ÙÐÏÌÎÉÔØ ÚÁÐÒÏÓ Ë ÂÁÚÅ ÄÁÎÎÙÈ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÕÎËÃÉÀ <function>query</function>, ËÏÔÏÒÁÑ ÐÒÉÎÉÍÁÅÔ ÓÔÒÏËÕ ÚÁÐÒÏÓÁ ËÁË ÁÒÇÕÍÅÎÔ. ÷ ÓÌÕÞÁÅ ÏÛÉÂËÉ ×ÁÍ ×ÏÚ×ÒÁÔÉÔØÓÑ ÏÂßÅËÔ DB Error, ÐÒÏ×ÅÒÑÊÔÅ ÅÇÏ Ó ÐÏÍÏÝØÀ <function>DB::isError</function> ÆÕÎËÃÉÉ. ðÒÉ ÕÄÁÞÎÏÍ (ÎÅÔ ÏÛÉÂÏË) ÚÁÐÒÏÓÅ ×Ù ÐÏÌÕÞÉÔÅ <parameter>DB_OK</parameter> (ÐÒÅÄÏÐÒÅÄÅÌÅÎÎÁÑ PEAR::DB ËÏÎÓÔÁÎÔÁ) ÉÌÉ ÅÓÌÉ ×Ù ×ÙÐÏÌÎÑÌÉ <parameter>SELECT</parameter>-×ÙÒÁÖÅÎÉÅ -- DB Result ÏÂßÅËÔ ÒÅÚÕÌØÔÁÔÁ. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php // ëÏÇÄÁ ×Ù ÉÍÅÅÔÅ DB ÏÂßÅËÔ... $sql = "select * from clients"; $result = $db->query($sql); // ÷ÓÅÇÄÁ ÐÒÏ×ÅÒÑÊÔÅ ÎÅ Ñ×ÌÑÅÔØÓÑ ÌÉ $result ÏÛÉÂËÏÊ if (DB::isError($result)) { die ($result->getMessage()); } .... ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.fetch"> <refnamediv> <refname>Fetch</refname> <refpurpose>÷ÙÂÏÒËÁ ÓÔÒÏË ÉÚ ÚÁÐÒÏÓÁ.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <refsect2> <title>æÕÎËÃÉÉ ×ÙÂÏÒËÉ.</title> <simpara> <classname>DB_Result</classname> ÏÂßÅËÔ ÏÂÅÓÐÅÞÉ×ÁÅÔ Ä×Å ÆÕÎËÃÉÉ ÄÌÑ ×ÙÂÏÒËÉ ÓÔÒÏË: <function>fetchRow</function> É <function>fetchInto</function>. <function>fetchRow</function> ×ÏÚ×ÒÁÝÁÅÔ ÓÔÒÏËÕ, null(ÎÏÌØ) ÅÓÌÉ ÄÁÎÎÙÈ ÂÏÌØÛÅ ÎÅÔ ÉÌÉ <classname>DB_Error</classname>, ÅÓÌÉ ÐÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ. <function>fetchInto</function> ÔÒÅÂÕÅÔ ÐÅÒÅÍÅÎÎÕÀ, ËÏÔÏÒÁÑ ÂÕÄÅÔ ÐÅÒÅÄÁÎÁ ÐÏ ÓÓÙÌËÅ Ë ÓÔÒÏËÅ ÒÅÚÕÌØÔÁÔÁ. ïÎÁ ×ÏÚ×ÒÁÔÉÔ ÎÏÌØ ËÏÇÄÁ ÒÅÚÕÌØÔÁÔ ÂÕÄÅÔ ÐÕÓÔ ÉÌÉ <classname>DB_Error</classname> ÐÒÉ ÏÛÉÂËÅ. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php ... $db = DB::connect($dsn); $res = $db->query("select * from mytable"); // ÷ÙÂÉÒÁÅÍ ËÁÖÄÕÀ ÓÔÒÏËÕ ÎÁ ËÁÖÄÏÊ ÉÔÅÒÁÃÉÉ ÐÏËÁ // ÎÅ ×ÙÂÅÒÅÍ ×ÓÅ ÓÔÒÏËÉ while ($row = $result->fetchRow()) { $id = $row[0]; } // éÌÉ: // ÎÁÐÒÉÍÅÒ ÉÓÐÏÌØÚÕÑ fetchInto() while ($result->fetchInto($row)) { $id = $row[0]; } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>÷ÙÂÏÒ ÆÏÒÍÁÔÁ ×ÙÂÉÒÁÅÍÙÈ ÓÔÒÏË</title> <para> ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÒÅÖÉÍÙ ×ÙÂÏÒËÉ: <itemizedlist> <listitem> <para> <parameter>DB_FETCHMODE_ORDERED</parameter> (ÐÏ ÕÍÏÌÞÁÎÉÀ) </para> <para> æÕÎËÃÉÉ <function>fetch*</function> ×ÏÚ×ÒÁÝÁÀÔ ÎÕÍÅÒÏ×ÁÎÙÊ ÍÁÓÓÉ×. îÕÍÅÒÁÃÉÑ ÂÅÒÅÔØÓÑ ÉÚ select-ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_ORDERED); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: array ( 0 => <column "id" data>, 1 => <column "name" data>, 2 => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row[0]; $name = $row[1]; $email = $row[2]; ?> ]]> </programlisting> </para> </listitem> <listitem> <para> <parameter>DB_FETCHMODE_ASSOC</parameter> </para> <para> ÷ÏÚ×ÒÁÝÁÅÔ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× Ó ÉÍÅÎÁÍÉ ÓÔÏÌÂÃÏ× ËÁË ËÌÀÞÁÍÉ ÍÁÓÓÉ×Á. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_ASSOC); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: array ( 'id' => <column "id" data>, 'name' => <column "name" data>, 'email' => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row['id']; $name = $row['name']; $email = $row['email']; ?> ]]> </programlisting> </para> </listitem> <listitem> <para> <parameter>DB_FETCHMODE_OBJECT</parameter> </para> <para> ÷ÏÚ×ÒÁÝÁÅÔ DB_row ÏÂßÅËÔ Ó ÉÍÅÎÁÍÉ ÓÔÏÌÂÃÏ× ËÁË Ó×ÏÊÓÔ×ÁÍÉ ÏÂßÅËÔÁ. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_OBJECT); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: db_row Object ( [id] => <column "id" data>, [name] => <column "name" data>, [email] => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row->id; $name = $row->name; $email = $row->email; ?> ]]> </programlisting> </para> </listitem> </itemizedlist> </para> </refsect2> <refsect2> <title>õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÂÉÒÁÅÍÙÈ ÓÔÒÏË</title> <para> ÷Ù ÍÏÖÅÔÅ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÆÏÒÍÁÔ ÄÌÑ ËÁÖÄÏÇÏ ×ÙÚÏ×Á ÉÌÉ ÄÌÑ ×ÓÅÇÏ ÜËÚÅÍÐÌÑÒÁ ËÌÁÓÓÁ DB. <programlisting role="php"> <![CDATA[ <?php // 1) õÓÔÁÎÏ×ËÁ ÒÅÖÉÍÁ ÄÌÑ ËÁÖÄÏÇÏ ×ÙÚÏ×Á: while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $id = $row['id']; } // 2) õÓÔÁÎÏ×ËÁ ÒÅÖÉÍÁ ÄÌÑ ×ÓÅÈ ×ÙÚÏ×Ï×: $db = DB::connect($dsn); // ÚÄÅÓØ ÕÓÔÁÎÏ×ÉÍ ÒÅÖÉÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÜÔÏÇÏ ÜËÚÅÍÐÌÑÒÁ Pear DB. // (ÄÌÑ ×ÓÅÈ ÚÁÐÒÏÓÏ×) $db->setFetchMode(DB_FETCHMODE_ASSOC); $result = $db->query(...); while ($row = $result->fetchRow()) { $id = $row['id']; } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>÷ÙÂÏÒËÁ ÓÔÒÏË ÐÏ ÎÏÍÅÒÕ</title> <para> óÉÓÔÅÍÁ ×ÙÂÏÒËÉ ÓÔÒÏË ÉÚ ÚÁÐÒÏÓÁ PEAR DB ÔÁËÖÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ ÄÌÑ ×ÙÂÉÒÁÅÍÏÇÏ ×ÙÒÁÖÅÎÉÑ. ÷Ù ÍÏÖÅÔÅ ×ÙÂÉÒÁÔØ ÓÔÒÏËÉ ÉÚ ÚÁÐÒÏÓÁ ÐÏ ÎÏÍÅÒÕ. üÔÏ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÏ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ×Ù×ÏÄÉÔØ ÞÁÓÔÉ ×ÓÅÇÏ ÚÁÐÒÏÓÁ (ÎÁÐÒÉÍÅÒ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÒÁÚÂÉÔÏÇÏ ÎÁ ÓÔÒÁÎÉÃÙ HTML ÓÐÉÓËÁ), ×ÙÂÏÒËÉ ÐÏ ÓÐÅÃÉÁÌØÎÏÍÕ ÐÏÒÑÄËÕ É Ô.Ä. <programlisting role="php"> <![CDATA[ <?php ... // ÓÔÒÏËÁ Ó ËÏÔÏÒÏÊ ÎÁÞÉÎÁÔØ ×ÙÂÏÒËÕ $from = 50; // ÓËÏÌØËÏ ÒÅÚÕÌØÔÁÔÏ× ÎÁ ÓÔÒÁÎÉÃÕ $res_per_page = 10; // ÐÏÓÌÅÄÎÑÑ ÓÔÒÏËÁ ×ÙÂÏÒËÉ ÄÌÑ ÜÔÏÊ ÓÔÒÁÎÉÃÙ $to = $from + $res_per_page; foreach (range($from, $to) as $rownum) { if (!$row = $res->fetchrow($fetchmode, $rownum)) { break; } $id = $row[0]; .... } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>ïÓ×ÏÂÏÖÄÅÎÉÅ ÐÁÍÑÔÉ, ÚÁÎÑÔÏÊ ÒÅÚÕÌØÔÁÔÏÍ (free)</title> <para> üÔÏ ÒÅËÏÍÅÎÄÕÅÔØÓÑ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ Ó ÒÅÚÕÌØÔÁÔÏÍ ÚÁÐÒÏÓÁ ÄÌÑ ÜËÏÎÏÍÉÉ ÐÁÍÑÔÉ. éÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÀ <function>free</function> ÄÌÑ ÜÔÏÇÏ. <programlisting role="php"> <![CDATA[ <?php ... $result = $db->query('SELECT * FROM clients'); while ($row = $result->fetchRow()) { ... } $result->free(); ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>âÙÓÔÒÏÅ ÐÏÌÕÞÅÎÉÅ ÄÁÎÎÙÈ ÉÚ ÚÁÐÒÏÓÁ</title> <para> PEAR DB ÐÒÅÄÌÁÇÁÅÔ ÎÅËÏÔÏÒÙÅ ÓÐÅÃ. ÐÕÔÉ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ ÉÚ ÚÁÐÒÏÓÁ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ <function>fetch*</function> ÆÕÎËÃÉÊ É ÃÉËÌÁ ÐÏ ÒÅÚÕÌØÔÁÔÕ. </para> <para> <function>getOne</function> ×ÏÚ×ÒÁÝÁÅÔ ÐÅÒ×ÙÊ ÒÅÚÕÌØÔÁÔ ÐÅÒ×ÏÇÏ ÓÔÏÌÂÃÁ ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ $numrows = $db->getOne('select count(id) from clients'); ]]> </programlisting> </para> <para> <function>getRow</function> ×ÏÚ×ÒÁÝÁÅÔ ÐÅÒ×ÕÀ ÓÔÒÏËÕ ËÁË ÍÁÓÓÉ×. <programlisting role="php"> <![CDATA[ $sql = 'select name, address, phone from clients where id=1'; if (is_array($row = $db->getRow($sql))) { list($name, $address, $phone) = $row; } ]]> </programlisting> </para> <para> <function>getCol</function> ×ÏÚ×ÒÁÝÁÅÔ ÍÁÓÓÉ× Ó ÄÁÎÎÙÍÉ ÕËÁÚÁÎÎÏÇÏ ÓÔÏÌÂÃÁ. îÏÍÅÒ ÓÔÏÌÂÃÁ ÐÅÒÅÄÁÅÔØÓÑ ËÁË ×ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ. <programlisting role="php"> <![CDATA[ $all_client_names = $db->getCol('select name from clients'); ]]> </programlisting> ÷ÙÒÁÖÅÎÉÅ ×ÙÛÅ ÍÏÖÅÔ ×ÅÒÎÕÔØ, ÎÁÐÒÉÍÅÒ: $all_client_names = array('Stig', 'Jon', 'Colin'); </para> <para> <function>getAssoc</function> ×ÏÚ×ÒÁÝÁÅÔ ×ÅÓØ ÒÅÚÕÌØÔÁÔ ÚÁÐÒÏÓÁ ËÁË ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ×, ÉÓÐÏÌØÚÕÑ ÐÅÒ×ÙÊ ÓÔÏÌÂÅà ËÁË ËÌÀÞ. <programlisting role="php"> <![CDATA[ $data = getAssoc('SELECT name, surname, phone FROM mytable') /* ÷ÏÚ×ÒÁÔÉÔ: array( 'Peter' => array('Smith', '944679408'), 'Tomas' => array('Cox', '944679408'), 'Richard' => array('Merz', '944679408') ) */ ]]> </programlisting> </para> <para> <function>getAll</function> ×ÏÚ×ÒÁÝÁÅÔ ×ÓÅ ÓÔÒÏËÉ ÉÚ ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ $data = getAll('SELECT id, text, date FROM mytable'); /* ÷ÏÚ×ÒÁÔÉÔ: array( 1 => array('4', 'four', '2004'), 2 => array('5', 'five', '2005'), 3 => array('6', 'six', '2006') ) */ ]]> </programlisting> </para> <para> óÅÍØÑ <function>get*</function> ÆÕÎËÃÉÊ ÄÅÌÁÅÔ ×ÓÀ ÇÒÑÚÎÕÀ ÒÁÂÏÔÕ ÚÁ ×ÁÓ, ÔÁËÕÀ ËÁË: ÚÁÐÒÏÓ Ë ÂÁÚÅ, ×ÙÂÏÒËÁ ÒÅÚÕÌØÔÁÔÏ× É ÏÓ×ÏÂÏÖÄÅÎÉÅ ÐÁÍÑÔÉ. úÁÍÅÔØÔÅ, ÞÔÏ ×ÓÅ ÆÕÎËÃÉÉ PEAR DB ×ÏÚ×ÒÁÝÁÀÔ <classname>PEAR DB_error</classname> ÏÂßÅËÔ ÐÒÉ ÏÛÉÂËÅ. </para> </refsect2> <refsect2> <title>ðÏÌÕÞÅÎÉÅ ÂÏÌØÛÅÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÅÚÕÌØÔÁÔÅ ÚÁÐÒÏÓÁ</title> <para> ó ÐÏÍÏÝØÀ PEAR DB ×Ù ÉÍÅÅÔÅ ÍÎÏÖÅÓÔ×Ï ÓÐÏÓÏÂÏ× ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÅÚÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÅÚÕÌØÔÁÔÅ ÚÁÐÒÏÓÁ. ôÁËÉÈ ËÁË: <itemizedlist> <listitem> <para> <function>numRows</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÒÏË, ËÏÔÏÒÙÅ ×ÏÚ×ÒÁÔÉÌ "SELECT" ÚÁÐÒÏÓ. <programlisting role="php"> <![CDATA[ // þÉÓÌÏ ÓÔÒÏË. echo $res->numRows(); ]]> </programlisting> </para> </listitem> <listitem> <para> <function>numCols</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÏÌÂÃÏ×, ËÏÔÏÒÙÅ ×ÏÚ×ÒÁÔÉÌ "SELECT" ÚÁÐÒÏÓ. <programlisting role="php"> <![CDATA[ // þÉÓÌÏ ÓÔÏÌÂÃÏ×. echo $res->numCols(); ]]> </programlisting> </para> </listitem> <listitem> <para> <function>affectedRows</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÒÏË, ËÏÔÏÒÙÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ Ó ÐÏÍÏÝØÀ ÚÁÐÒÏÓÏ× ("INSERT", "UPDATE" ÉÌÉ "DELETE"). <programlisting role="php"> <![CDATA[ // úÁÐÏÍÎÉÔÅ, ÞÔÏ ÜÔÏ ×ÙÒÁÖÅÎÉÅ ÎÅ ×ÏÚ×ÒÁÝÁÅÔ ÏÂßÅËÔ ÒÅÚÕÌØÔÁÔÁ. $db->query('DELETE * FROM clients'); echo 'ñ ÕÄÁÌÉÌ ' . $db->affectedRows() . ' ËÌÉÅÎÔÏ×'; ]]> </programlisting> </para> </listitem> <listitem> <para> <function>tableInfo</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï ×ÏÚ×ÒÁÝÁÅÍÙÈ ÐÏÌÑÈ "SELECT" ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ // éÎÆÏÒÍÁÃÉÑ Ï ÔÁÂÌÉÃÅ print_r($res->tableInfo()); ]]> </programlisting> </para> </listitem> </itemizedlist> îÅ ÚÁÂÙ×ÁÊÔÅ ÐÒÏ×ÅÒÑØ, ÎÅ Ñ×ÌÑÅÔÓÑ ÌÉ ×ÏÚ×ÒÁÝÁÅÍÙÊ ×ÙÛÉÍ ÄÅÊÓÔ×ÉÅÍ ÒÅÚÕÌØÔÁÔ ÏÂßÅËÔÏÍ ÏÛÉÂËÉ PEAR Error. åÓÌÉ ×Ù ÐÏÌÕÞÉÔÅ ÓÏÏÂÝÅÎÉÅ ÔÉÐÁ: <quote>DB_error: database not capable</quote>, ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÁÛ óõâä ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÜÔÉÈ ÄÅÊÓÔ×ÉÊ. </para> </refsect2> </refsect1> </refentry> <refentry id="core.db.sequences"> <refnamediv> <refname> Sequences</refname> <refpurpose>ðÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ × âä</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <para> ðÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ - ÜÔÏ ÐÕÔØ ÄÌÑ ÓÏÚÄÁÎÉÑ ÕÎÉËÁÌØÎÙÈ ID ÄÌÑ ÓÔÒÏË ÄÁÎÎÙÈ. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ × ÒÁÂÏÔÅ âä, ÔÁËÉÅ ËÁË MySQL, ÄÕÍÁÊÔÅ Ï ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÈ, ËÁË Ï ÄÒÕÇÏÍ ÐÕÔÉ ÓÏÚÄÁÎÉÑ ÐÏÌÅÊ ÔÉÐÁ AUTO_INCREMENT. üÔÏ ÏÞÅÎØ ÐÒÏÓÔÏ, ÓÎÁÞÁÌÁ ÚÁÐÒÁÛÉ×ÁÅÔÅ ID, Á ÐÏÔÏÍ ×ÓÔÁ×ÌÑÅÔÅ ÜÔÏ ÚÎÁÞÅÎÉÅ × ÐÏÌÅ Ó ID ÎÏ×ÏÊ ÓÔÒÏËÉ, ËÏÔÏÒÕÀ ×Ù ×ÓÔÁ×ÌÑÅÔÅ × ÔÁÂÌÉÃÕ. ÷Ù ÍÏÖÅÔÅ ÉÍÅÔØ ÂÅÌÅÅ ÏÄÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÄÌÑ ×ÓÅÈ ×ÁÛÉÈ ÔÁÂÌÉÃ, ÐÒÏÓÔÏ ÉÓÐÏÌØÚÕÊÔÅ ×ÓÅÇÄÁ ÏÄÎÕ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÄÌÑ ËÏÎËÒÅÔÎÏÊ ÔÁÂÌÉÃÙ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÚÎÁÞÅÎÉÑ ÕÎÉËÁÌØÎÏÇÏ ID ÉÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÀ <function>nextId</function>, ÅÓÌÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ(sequence) ÎÅ ÓÕÝÅÓÔ×ÕÅÔ - ÏÎÁ ÂÕÄÅÔ ÓÏÚÄÁÎÁ. <programlisting role="php"> <![CDATA[ <?php ... $id = $db->nextId('mySequence'); // éÓÐÏÌØÚÕÊÔÅ ID × ×ÁÛÅÍ INSERT ÚÁÐÒÏÓÅ $res = $db->query("INSERT INTO myTable (id,text) VALUES ($id,'foo')"); ... ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.execute"> <refnamediv> <refname> Execute </refname> <refpurpose>ðÏÄÇÏÔÏ×ËÁ É ÷ÙÐÏÌÎÅÎÉÅ/íÕÌØÔÉ÷ÙÐÏÌÎÅÎÉÅ</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <refsect2 id="core.db.prep_exec.purpose"> <title>ãÅÌØ</title> <para> <function>Prepare</function> É <function>execute*</function> ÆÕÎËÃÉÉ ÄÁÀÔ ×ÁÍ ÓÉÌÕ É ÇÉÂËÏÓÔØ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÏ×À ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÈ, ËÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ×ÙÐÏÌÎÑÔØ ÎÅÓËÏÌØËÏ ÏÄÉÎÁËÏ×ÙÈ ÚÁÐÒÏÓÏ× (ÔÁËÉÈ ËÁË ÄÏÂÁ×ÌÅÎÉÅ ÓÐÉÓËÁ × ÂÁÚÕ) ÉÌÉ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÓÄÅÌÁÔØ ÐÏÄÄÅÒÖËÕ ÒÁÚÎÙÈ âä, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÒÁÚÎÕÀ ÒÅÁÌÉÚÁÃÉÀ SQL ÓÔÁÎÄÁÒÔÁ. </para> <para> ðÒÅÄÓÔÁ×ÉÍ, ÞÔÏ Õ ×ÁÓ Ä×Å âä, Ó ÒÁÚÎÙÍ INSERT ÓÉÎÔÁËÓÉÓÏÍ: <programlisting role="php"> <![CDATA[ db1 : INSERT INTO tbl_name ( col1, col2 ... ) VALUES ( expr1, expr2 ... ) db2 : INSERT INTO tbl_name SET col1=expr1, col2=expr2 ... ]]> </programlisting> éÓÈÏÄÑ ÉÚ ÜÔÏÇÏ ÄÌÑ ÓÏÚÄÁÎÉÑ ÕÎÉÆÉÃÉÒÏ×ÁÎÎÏÇÏ ÓËÒÉÐÔÁ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÍÁÓÓÉ× Ó ÚÁÐÒÏÓÁÍÉ, ÔÁËÏÊ ËÁË: <programlisting role="php"> <![CDATA[ $statment['db1']['INSERT_PERSON'] = "INSERT INTO person ( surname, name, age ) VALUES ( ?, ?, ? )" ; $statment['db2']['INSERT_PERSON'] = "INSERT INTO person SET surname=?, name=?, age=?" ; ]]> </programlisting> </para> </refsect2> <refsect2> <title>Prepare - ðÏÄÇÏÔÏ×ËÁ</title> <para> éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÏÚÍÏÖÎÏÓÔÅÊ ÐÒÉ×ÅÄÅÎÙÈ × ÏÐÉÓÁÎÉÉ <link linkend="core.db.prep_exec.purpose">ãÅÌÉ</link>, ÐÒÏÉÓÈÏÄÉÔ × Ä×Á ÜÔÁÐÁ. üÔÁÐ ÐÅÒ×ÙÊ ÚÁËÌÀÞÁÅÔØÓÑ × <emphasis> ÐÏÄÇÏÔÏ×ËÅ</emphasis> ×ÙÒÁÖÅÎÉÑ É ×ÔÏÒÏÊ - × <emphasis>×ÙÐÏÌÎÅÎÉÉ</emphasis> ÏÎÎÏÇÏ. </para> <para> æÕÎËÃÉÑ <function>Prepare</function> ÄÏÌÖÎÁ ×ÙÚÙ×ÁÔØÓÑ Ó ÏÓÎÏ×ÎÙÍ ×ÙÒÁÖÅÎÉÅÍ ÅÄÉÎÏÖÄÙ. ïÎÁ ×ÏÚ×ÒÁÝÁÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÄÌÑ ÜÔÏÇÏ ×ÙÒÁÖÅÎÉÑ. </para> <para> óÏÚÄÁÎÉÅ ÏÓÎÏ×ÎÏÇÏ ×ÙÒÁÖÅÎÉÑ ÏÞÅÎØ ÐÒÏÓÔÏ: ðÉÛÉÔÅ SQL ÚÁÐÒÏÓ ËÁË ÏÂÙÞÎÏ, Ô.Å. <programlisting> <![CDATA[ SELECT surname, name, age FROM person WHERE name = 'name_to_find' AND age < 'age_limit' ]]> </programlisting> ôÅÐÅÒØ ÐÏÓÍÏÔÒÉÔÅ, ËÁËÉÅ ÉÚ ÐÁÒÁÍÅÔÒÏ× ÄÏÌÖÎÙ ÂÙÔØ ÚÁÍÅÎÅÎÙ ÐÏËÁ ÓËÒÉÐÔ ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ. úÁÍÅÎÉÔÅ ÜÔÉ ÐÁÒÁÍÅÔÒÙ ÍÅÔËÏÊ-ÚÁÐÏÌÎÉÔÅÌÅÍ. <programlisting> <![CDATA[ SELECT surname, name, age FROM person WHERE name = ? AND age < ? ]]> </programlisting> ÷ÏÔ É ×ÓÅ! ôÅÐÅÒØ ×Ù ÉÍÅÅÔÅ ÏÓÎÏ×ÎÏÅ ×ÙÒÁÖÅÎÉÑ ÄÌÑ ÆÕÎËÃÉÉ <function>prepare</function>. </para> <para> <function>Prepare</function> ÍÏÖÅÔ ÏÔÌÁ×ÌÉ×ÁÔØ ÒÁÚÎÙÅ ÔÉÐÙ ÍÅÔÏË-ÚÁÐÏÌÎÉÔÅÌÅÊ ÉÌÉ ÓÏÐÏÓÔÁ×ÌÅÎÉÊ. <simplelist> <member> ? - (ÒÅËÏÍÅÎÄÕÅÔØÓÑ) ÄÌÑ ÓËÁÌÑÒÎÙÈ ÔÉÐÏ× ÚÎÁÞÅÎÉÊ, ÔÁËÉÈ ËÁË ÓÔÒÏËÉ ÉÌÉ ÎÏÍÅÒÁ, ÚÎÁÞÅÎÉÑ ÂÕÄÕÔ Ë×ÏÔÉÒÏ×ÁÔØÓÑ(ÏÂÒÁÍÌÑÔØÓÑ ËÁ×ÙÞËÁÍÉ) × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ âä. </member> <member> ! - ÄÌÑ ÓËÁÌÑÒÎÙÈ ÔÉÐÏ× ÚÎÁÞÅÎÉÊ, ËÏÔÏÒÙÊ ÂÕÄÕ ×ÎÏÓÉÔØÓÑ × ×ÙÒÁÖÅÎÉÅ <quote>ËÁË ÅÓÔØ</quote>. </member> <member> & - ÔÒÅÂÕÅÔ ÎÁÌÉÞÉÅ ÉÍÅÎÉ ×ÎÅÛÎÅÇÏ ÆÁÊÌÁ, ÓÏÄÅÒÖÉÍÏÅ ÜÔÏÇÏ ÆÁÊÌÁ ÂÕÄÅÔ ×ÎÏÓÉÔØÓÑ × ×ÙÒÁÖÅÎÉÅ (Ô.Å. ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ ÇÒÁÆÉÞÅÓËÉÈ ÆÁÊÌÏ× × âä ÎÁÐÒÉÍÅÒ) </member> </simplelist> </para> </refsect2> <refsect2> <title>Execute/ ExecuteMultiple - ÷ÙÐÏÌÎÅÎÉÅ/íÕÌØÔÉ÷ÙÐÏÌÎÅÎÉÅ</title> <para> ðÏÓÌÅ ÐÏÄÇÏÔÏ×ËÉ ×ÙÒÁÖÅÎÉÑ, ×Ù ÍÏÖÅÔÅ ×ÙÐÏÌÎÑÔØ ÚÁÐÒÏÓ. üÔÏ ÏÚÎÁÞÁÅÔ ÐÏÄÓÔÁ×ÌÅÎÉÅ ÐÅÒÅÍÅÎÎÙÈ × ×ÙÒÁÖÅÎÉÅ. äÌÑ ÜÔÏÇÏ ÆÕÎËÃÉÉ <function>execute</function> ÎÅÏÂÈÏÄÉÍÏ Ä×Á ÁÒÇÕÍÅÎÔÁ, ÉÄÅÎÔÉÆÉËÁÔÏÒ ÏÔ ÆÕÎËÃÉÉ <function>prepare</function> É ÍÁÓÓÉ× Ó ÚÎÁÞÅÎÉÑÍÉ ÄÌÑ ÐÏÄÓÔÁÎÏ×ËÉ. íÁÓÓÉ× ÄÏÌÖÅÎ ÂÙÔØ ÎÕÍÅÒÏ×ÁÎÎÙÍ. ðÅÒ×ÙÊ ÜÌÅÍÅÎÔ ÂÕÄÅÔ ÐÏÄÓÔÁ×ÌÅÎ ×ÍÅÓÔÏ ÐÅÒ×ÏÊ ÍÅÔËÉ-ÚÁÐÏÌÎÉÔÅÌÑ, ×ÔÏÒÏÊ - ×ÍÅÓÔÏ ×ÔÏÒÏÊ, É Ô.Ä. îÕÍÅÒÁÃÉÑ ÎÅ ÚÁ×ÉÓÉÔ ÏÔ ÔÉÐÁ ÉÓÐÏÌØÚÕÅÍÙÈ ÍÅÔÏË-ÚÁÐÏÌÎÉÔÅÌÅÊ. <programlisting role="php"> <![CDATA[ <?php // ðÒÉÍÅÒ ×ÎÅÓÅÎÉÑ ÄÁÎÎÙÈ $alldata = array( array(1, 'one', 'en'), array(2, 'two', 'to'), array(3, 'three', 'tre'), array(4, 'four', 'fire')); $sth = $dbh->prepare("INSERT INTO numbers VALUES(?,?,?)"); foreach ($alldata as $row) { $dbh->execute($sth, $row); } ?> ]]> </programlisting> ÷ ÐÒÉÍÅÒÅ ÚÁÐÒÏÓ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÞÅÔÙÒÅ ÒÁÚÁ: <programlisting> <![CDATA[ INSERT INTO numbers VALUES( '1', 'one', 'en') INSERT INTO numbers VALUES( '2', 'two', 'to') INSERT INTO numbers VALUES( '3', 'three', 'tre') INSERT INTO numbers VALUES( '4', 'four', 'fire') ]]> </programlisting> æÕÎËÃÉÑ <function>ExecuteMultiple</function> ÒÁÂÏÔÁÅÔ ÔÏÞÎÏ ÔÁËÖÅ, ÎÏ ÐÒÉÎÉÍÁÅÔ Ä×Õ-ÍÅÒÎÙÊ ÍÁÓÓÉ× ËÁË ÐÁÒÁÍÅÔÒ. works in the same way, but requires a two dimensional array. é ÍÙ ÍÏÖÅÍ ÐÒÅÄÓÔÁ×ÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÐÒÉÍÅÒ × ÄÒÕÇÏÍ ×ÉÄÅ: <programlisting role="php"> <![CDATA[ <?php // Example inserting data $alldata = array( array(1, 'one', 'en'), array(2, 'two', 'to'), array(3, 'three', 'tre'), array(4, 'four', 'fire')); $sth = $dbh->prepare("INSERT INTO numbers VALUES(?,?,?)"); $dbh->executeMultiple($sth, $alldata); } ?> ]]> </programlisting> òÅÚÕÌØÔÁÔ ÂÕÄÅÔ ÔÏÔ ÖÅ. åÓÌÉ ÏÄÎÁ ÉÚ ÚÁÐÉÓÅÊ ÂÕÄÅÔ ÎÅÕÄÁÞÎÏÊ, ÏÓÔÁÌØÎÙÅ ÚÁÐÉÓÉ ×ÙÐÏÌÎÑÔØÓÑ ÎÅ ÂÕÄÕÔ. </para> <para> åÓÌÉ ÆÕÎËÃÉÑ <function>execute*</function> ÎÅ ÕÄÁÌÁÓØ, <classname>DB_Error</classname>, Á × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ <parameter>DB_OK</parameter> ÂÕÄÅÔ ×ÏÚ×ÒÁÝÅÎÏ. </para> </refsect2> </refsect1> </refentry> </reference> <!-- 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 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 --> Index: peardoc/ru/core/http.xml +++ peardoc/ru/core/http.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="http"> <title>HTTP ÆÕÎËÃÉÉ</title> <titleabbrev>PEAR HTTP</titleabbrev> <partintro> <simpara> </simpara> </partintro> <refentry id="core.http.http"> <refnamediv> <refname>HTTP</refname> <refpurpose>ëÌÁÓÓ HTTP ÕÔÉÌÉÔ</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>require_once "HTTP.php";</synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> HTTP ÆÕÎËÃÉÉ. </simpara> </refsect1> <refsect1 id="core.http.http.date"> <title>HTTP::date</title> <funcsynopsis> <funcprototype> <funcdef>string <function>HTTP::date</function></funcdef> <paramdef>integer <parameter>time</parameter></paramdef> </funcprototype> </funcsynopsis> <para> æÏÒÍÁÔÉÒÏ×ÁÎÉÅ RFC ÓÏ×ÍÅÓÔÉÍÏÇÏ HTTP ÚÁÇÏÌÏ×ËÁ. üÔÁ ÆÕÎËÃÉÑ ÚÁ×ÉÓÉÔ ÏÔ ÄÉÒÅËÔÉ×Ù php.ini - "y2k_compliance". </para> <para> ðÁÒÁÍÅÔÒ <parameter>time</parameter> ÄÏÌÖÅÎ ÂÙÔØ ÓÔÅÍÐÏÍ UNIX (timestamp), ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÒÅÏÂÒÁÚÏ×ÁÎ × RFC ÓÏ×ÍÅÓÔÉÍÕÀ ÄÁÔÕ, É ×ÏÚ×ÒÁÝÅÎ ÖÔÏÊ ÆÕÎËÃÉÅÊ. </para> </refsect1> <refsect1 id="core.http.http.negotiateLanguage"> <title>HTTP::negotiateLanguage</title> <funcsynopsis> <funcprototype> <funcdef>string <function>HTTP::negotiateLanguage</function></funcdef> <paramdef>array <parameter>supported</parameter></paramdef> <paramdef>string <parameter>default</parameter></paramdef> </funcprototype> </funcsynopsis> <para> ñÚÙË ÄÏÇÏ×ÏÒÅÎÎÏÓÔÉ (Negotiate language), ËÏÔÏÒÙÊ ÐÏÓÙÌÁÅÔØÓÑ ÂÒÏÕÚÅÒÏÍ ÐÏÌØÚÏ×ÁÔÅÌÑ ÞÅÒÅÚ HTTP ÚÁÇÏÌÌÏ×ÏË Accept-Language ÉÌÉ ÈÏÓÔÏÍ ÓÌÉÅÎÔÁ. æÏÒÍÁ ÄÌÑ ËÏÄÏ× ÑÚÙËÁ × ÏÓÎÏ×ÎÏÍ "ll" ÄÌÑ ÑÚÙËÁ, ÎÁ ËÏÔÏÒÏÍ ÇÏ×ÏÒÑÔ ×Ï ×ÓÅÊ ÓÔÒÁÎÅ, ÉÌÉ "ll_CC" ÄÌÑ ÑÚÙËÁ, ÎÁ ËÏÔÏÒÏÍ ÒÁÚÇÏ×ÁÒÉ×ÁÀÔ × ÏÔÄÅÌØÎÏÊ ÓÔÒÁÎÅ. îÁÐÒÉÍÅÒ, ÁÎÇÌÉÊÓËÉÊ óûá (U.S. English) - ÜÔÏ "en_US", Á ×ÏÔ âÒÉÔÁÎÓËÉÊ ÁÎÇÌÉÊÓËÉÊ (British English) - ÜÔÏ "en_UK". ðÏÒÔÕÇÁÌØÓËÉÊ × ðÏÒÔÕÇÁÌÉÉ - "pt_PT", ÎÁÐÒÏÔÉ× âÒÁÚÉÌØÓËÉÊ ÐÏÒÔÕÇÁÌØÓËÉÊ - "pt_BR". ä×Õ-ÂÕË×ÅÎÎÙÅ ËÏÄÙ ÓÔÒÁÎ ÍÏÖÎÏ ÎÁÊÔÉ × ÓÔÁÎÄÁÒÔÅ ISO 3166. </para> <para> ðÏÄÄÅÒÖÉ×ÁÅÔØÓÑ ËÏÌÉÞÅÓÔ×Ï (quantity) ÑÚÙËÏ× × Ú×ÇÏÌÏ×ËÅ Accept-Language: </para> <para> <programlisting> Accept-Language: en_UK;q=0.7, en_US;q=0.6, no;q=1.0, dk;q=0.8 </programlisting> </para> <para> ðÅÒ×ÙÊ ÐÁÒÁÍÅÔÒ <parameter>supported</parameter> - ÜÔÏ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× ÉÎÄÅËÓÉÒÏ×ÁÎÎÙÊ ËÏÄÁÍÉ ÑÚÙËÏ× (ËÏÄÁÍÉ ÓÔÒÁÎ). úÎÁÞÅÎÉÑ ÄÏÌÖÎÙ ÐÒÉÒÁ×ÎÉ×ÁÔØÓÑ Ë ÉÓÔÉÎÅ (true). </para> <para> ÷ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ <parameter>default</parameter> - ÜÔÏ ÑÚÙË ÐÏ ÕÍÏÌÞÁÎÉÀ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÅÓÌÉ ÎÉÏÄÉÎ ÑÚÙË ÎÅ ×ÙÑ×ÌÅÎ ÐÏ ÄÏÇÏ×ÏÒÅÎÎÏÓÔÉ (negotiation). úÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÜÔÏÇÏ ÐÁÒÁÍÅÔÒÁ - ÜÔÏ "en_US" ÄÌÑ U.S. English. </para> </refsect1> </refentry> <refentry id="core.http.compress"> <refnamediv> <refname>Compress</refname> <refpurpose>HTTP ËÏÍÐÒÅÓÓÉÑ</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis> require_once "HTTP/Compress.php"; HTTP_Compress::start(); /** úÄÅÓØ ×Ù ÇÅÎÅÒÉÒÕÅÔÅ ×Ù×ÏÄ ÓÔÒÁÎÉÃÙ */ HTTP_Compress::output(); </synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara></simpara> </refsect1> <refsect1 id="core.http.compress.start"> <title>HTTP_Compress::start</title> <funcsynopsis> <funcprototype> <funcdef>void <function>HTTP_Compress::start</function></funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> óÔÁÒÔÕÅÔ ÂÕÆÅÒ ×Ù×ÏÄÁ, É ÏÂÅÓÐÅÞÉ×ÁÅÔ ÞÔÏ, ×Ù×ÏÄ ÎÁ ÅËÒÁÎ (ÏËÎÏ ÂÒÏÕÚÅÒÁ) ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÎÅ ÂÕÄÅÔ, Á ÂÕÄÅÔ ÂÕÆÅÒÉÚÉÒÏ×ÁÔØÓÑ. </para> </refsect1> <refsect1 id="core.http.compress.output"> <title>HTTP_Compress::output</title> <funcsynopsis> <funcprototype> <funcdef>void <function>HTTP_Compress::output</function></funcdef> <paramdef>boolean <parameter><optional>compress</optional></parameter></paramdef> <paramdef>boolean <parameter><optional>use_etag</optional></parameter></paramdef> <paramdef>boolean <parameter><optional>send_body</optional></parameter></paramdef> </funcprototype> </funcsynopsis> <para> ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÂÕÆÅÒÁ ×Ù×ÏÄÁ, ËÏÍÐÒÅÓÓÉÒÏ×ÁÎÎÏÇÏ ÐÏ ÖÅÌÁÎÉÀ, ÓÏ ×ÓÅÍÉ ÚÁÇÏÌÏ×ËÁÍÉ. </para> <para> ðÅÒ×ÙÊ ÐÁÒÁÍÅÔÒ <parameter>compress</parameter> ÏÐÒÅÄÅÌÑÅÔ, ÎÕÖÎÏ ÌÉ ÉÓÐÏÌØÚÏ×ÁÔØ gzip ËÏÍÐÒÅÓÓÉÀ. (ðÒÉÍÅÞ.: âÒÏÕÚÅÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÔÁËÖÅ ÄÏÌÖÅÔ ÐÏÄÄÅÒÖÉ×ÁÔØ gzip). ÷ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ <parameter>use_etag</parameter> ÏÐÒÅÄÅÌÑÅÔ ÎÕÖÎÏ ÌÉ ÇÅÎÅÒÉÒÏ×ÁÔØ ETag, É ÎÅ ÐÏÓÙÌÁÔØ ÔÅÌÏ ÓÏÄÅÒÖÁÎÉÑ ÅÓÌÉ ÂÒÏÕÚÅÒ ÉÍÅÅÔ ÜÔÏÔ ÏÂØÅËÔ ÕÖÅ ËÅÛÉÒÏ×ÁÎÎÙÍ. <parameter>send_body</parameter> ÏÐÒÅÄÅÌÑÅÔ, ÐÏÓÙÌÁÔØ ÌÉ ÔÅÌÏ ÚÁÐÒÏÓÁ? (äÏÌÖÎÏ ÂÙÔØ false ÄÌÑ HEAD ÚÁÐÒÏÓÁ.) </para> </refsect1> </refentry> </reference> <!-- 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 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 --> Index: peardoc/ru/core/pear.xml +++ peardoc/ru/core/pear.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="reference"> <title>PEAR ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ. É ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË</title> <titleabbrev>PEAR</titleabbrev> <partintro> <simpara> üÔÏÔ ÒÁÚÄÅÌ ×ËÌÀÞÁÅÔ × ÓÅÂÑ ÄÏËÕÍÅÎÔÁÃÉÀ ÄÌÑ ÏÓÎÏ×ÎÏÇÏ ËÌÁÓÓÁ PEAR É ÄÌÑ PEAR ËÌÁÓÓÁ, ËÏÔÏÒÙÊ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÍÅÈÁÎÉÚÍ ÄÌÑ "ÏÔÌÏ×Á" ÏÛÉÂÏË. ðÏÄÒÁÚÕÍÅ×ÁÅÔØÓÑ, ÞÔÏ ×Ù ÕÖÅ ÏÓ×ÅÄÏÍÌÅÎÙ Ï ÏÂßÅËÔÁÈ É ËÌÁÓÓÁÈ × PHP. </simpara> </partintro> <refentry id="class.pear"> <refnamediv> <refname>PEAR</refname> <refpurpose>PEAR ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ (ÄÅÓÔÒÕËÔÏÒÙ, ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË)</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>require_once "PEAR.php";</synopsis> <synopsis>class <replaceable>classname</replaceable> extends <classname>PEAR</classname> { ... }</synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> ïÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÏÐÒÅÄÅÌÑÅÔ ÓÔÁÎÄÁÒÔ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔØÓÑ × ÂÏÌØÛÉÎÓÔ×Å PEAR-ËÌÁÓÓÏ×. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÎÅ ÉÓÐÏÌØÚÕÅÔØÓÑ ÓÁÍ ÐÏ ÓÅÂÅ, ÅÇÏ ÉÓÐÏÌØÚÕÀÔ ÄÌÑ ÎÁÐÉÓÁÎÉÑ ÐÏÄËÌÁÓÓÏ×. </simpara> <para> ëÌÀÞÅ×ÙÅ ×ÏÚÍÏÖÎÏÓÔÉ: <itemizedlist> <listitem> <simpara>ÕÎÉÞÔÏÖÅÎÉÅ ÏÂØÅËÔÏ× - "ÄÅÓÔÒÕËÔÏÒÙ"</simpara> </listitem> <listitem> <simpara>ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË</simpara> </listitem> </itemizedlist> </para> </refsect1> <refsect1 id="destructors"> <title>PEAR "ÄÅÓÔÒÕËÔÏÒÙ"</title> <simpara> åÓÌÉ ×Ù ÎÁÓÌÅÄÕÅÔÅ <classname>PEAR</classname> × ËÌÁÓÓÅ ÐÏÄ ÎÁÚ×ÁÎÉÅÍ <replaceable>ClassName</replaceable>, ×Ù ÍÏÖÎÔÅ ÏÐÒÅÄÅÌÉÔØ ÍÅÔÏÄ ÐÏÄ ÎÁÚ×ÁÎÉÅÍ _<replaceable>className</replaceable> (ÎÁÚ×ÁÎÉÅ ËÌÁÓÓÁ Ó ÐÏÄÞÅÒËÉ×ÁÎÉÅÍ ×ÎÁÞÁÌÅ) ËÏÔÏÒÙÊ ÂÕÄÅÔ ÓÕÝÅÓÔ×Ï×ÁÔØ ÐÒÉ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ËÌÁÓÓÁ. óÔÒÏÇÏ - ÜÔÏ ÎÅ ÅÓÔØ ÄÅÓÔÒÕËÔÏÒ, ÐÒÉ ËÏÔÏÒÏÍ ×Ù ÍÏÖÅÔÅ "ÕÄÁÌÉÔØ" ÏÂØÅËÔ (delete object) É ×ÙÚ×ÁÔØ ÄÅÓÔÒÕËÔÏÒ, ÎÏ × ÜÔÏÍ ÓÍÙÓÌÅ PHP ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÆÕÎËÃÉÊ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback functions). óÍ. <link linkend="example.destructors">ÐÒÉÍÅÒ</link>. </simpara> <para> <warning id="destructors.warning"> <title>÷ÁÖÎÏ!</title> <para> þÔÏÂÙ ÄÅÓÔÒÕËÔÏÒÙ ÒÁÂÏÔÁÌÉ ÐÒÁ×ÉÌØÎÏ, ×Ù ÄÏÌÖÎÙ ÏÐÒÅÄÅÌÑÔØ ÜËÚÅÍÐÌÑÒ ËÌÁÓÓÁ Ó "=& new" ÏÐÅÒÁÔÏÒÏÍ (ÐÏ ÓÓÙÌËÅ) ËÁË ÎÁÐÒÉÍÅÒ: <programlisting role="php"> $obj =& new MyClass(); </programlisting> </para> <simpara> åÓÌÉ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÎÓÔÒÕËÃÉÀ "= new", ÔÏ ÏÂßÅËÔ × ÓÐÉÓËÅ PEAR ÂÕÄÅÔ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎ ËÁË <literal>ËÏÐÉÑ</literal>. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÓËÏÐÉÒÕÀÔØÓÑ ËÏÎÓÔÒÕËÔÏÒ É ÄÅÓÔÒÕËÔÏÒ. </simpara> </warning> </para> </refsect1> <refsect1 id="error-handling"> <title>PEAR ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË</title> <simpara> ïÓÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÔÁËÖÅ ÐÒÅÄÌÁÇÁÅÔ ÒÅÛÅÎÉÅ ÄÌÑ ÏÔÌÁ×ÌÉ×ÁÎÉÑ ÍÎÏÇÉÈ ËÏÍÐÌÅËÓÎÙÈ ÏÛÉÂÏË ËÏÔÏÒÙÅ ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ true/false, ÉÌÉ ÞÉÓÌÏ×ÙÅ ËÏÄÙ. PEAR Error - ÜÔÏ ÏÂØÅËÔ ×ÏÚ×ÒÁÝÁÅÍÙÊ ËÌÁÓÓÏÍ <classname>PEAR_Error</classname>, ÉÌÉ ËÌÁÓÓÏÍ ÒÁÓÛÉÒÑÀÝÉÍ <classname>PEAR_Error</classname>. </simpara> <simpara> ïÄÎÉÍ ÉÚ ËÒÉÔÅÒÉÅ× ÒÁÚÒÁÂÏÔËÉ ÆÏÒÍÁÔÁ ÏÛÉÂÏË PEAR, Ñ×ÌÑÅÔÓÑ ÔÏ, ÞÔÏ ÏÛÉÂËÉ ÎÅ ÄÏÌÖÎÙ ÄÅÌÁÔØ ×Ù×ÏÄÁ ÎÁ ÅËÒÁÎ ÐÏÌØÚÏ×ÁÔÅÌÀ, ÏÎÉ ÄÏÌÖÎÙ ÏÂÒÁÂÁÔÙ×ÁÔØÓÑ ÂÅÚ ËÁËÏÇÏ-ÌÉÂÏ ×Ù×ÏÄÁ ÎÁ ÜËÒÁÎ, ÅÓÌÉ ÜÔÏ ÎÅÏÂÈÏÄÉÍÏ. üÔÏ ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÏÂÒÁÂÁÔÙ×ÁÔØ ÏÛÉÂËÉ ÂÏÌÅÅ ÐÒÉ×ÌÅËÁÔÅÌØÎÏ, ÔÁË ÖÅ ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ ÏÔÌÉÞÅÎ ÏÔ HTML ( ÎÁÐÒÉÍÅÒ WML ÉÌÉ ÄÒÕÇÏÊ XML ÆÏÒÍÁÔ). </simpara> <simpara> ïÂØÅËÔÙ ÏÛÉÂÏË ÍÏÇÕÔ ÂÙÔØ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÎÙ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÏÐÒÅÄÅÌÅÎÎÙÈ ÄÅÊÓÔ×ÉÊ ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÏÎÉ (ÏÂØÅËÔÙ) ÂÙÌÉ ÓÏÚÄÁÎÙ. îÁÐÒÉÍÅÒ: ×Ù×ÅÄÅÎÉÅ ÎÁ ÅËÒÁÎ ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÅ, ÐÅÞÁÔØ ÓÏÏÂÝÅÎÉÑ É ×ÙÈÏÄ ÉÚ ÐÒÏÇÒÁÍÍÙ, ÏÔÌÏ× ÏÛÉÂÏË Ó ÐÏÍÏÝØÀ PHP ÆÕÎËÃÉÉ <function>trigger_error</function>, ÉÌÉ ×ÙÚÏ× ÆÕÎËÃÉÉ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback). üÔÏ ÏÐÒÅÄÅÌÅÎÏ × <classname>PEAR_Error</classname> ËÏÎÓÔÒÕËÔÏÒÅ, ÎÏ ×ÓÅ ÐÁÒÁÍÅÔÒÙ ÎÅÏÂÑÚÁÔÅÌØÎÙ, É ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÕÍÏÌÞÁÎÉÑ ÄÌÑ ÏÛÉÂÏË, ×ÏÚ×ÒÁÝÁÅÍÙÈ ÌÀÂÙÍ ÏÂØÅËÔÏÍ, ÂÁÚÉÒÕÀÝÅÍÓÑ ÎÁ ÎÁ <classname>PEAR</classname> ËÌÁÓÓÅ. óÍ. ÐÒÉÍÅÒ <link linkend="example.error1">PEAR error examples</link>, ÐÏËÁÚÙ×ÁÀÝÉÊ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÁÓÓ, É ÏÐÉÓÁÎÉÅ <classname>PEAR_Error</classname> ÄÌÑ ÂÏÌÅÅ ÄÅÔÁÌØÎÏÇÏ ÉÚÕÞÅÎÉÑ. </simpara> </refsect1> <refsect1> <title>ðÒÉÍÅÒÙ</title> <para> üÔÏÔ ÐÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÜÍÕÌÑÃÉÀ ÄÅÓÔÒÕËÔÏÒÏ× × ËÌÁÓÓÁÈ, ÐÒÏÉÚ×ÏÄÎÙÈ ÏÔ PEAR. ðÒÏÓÔÏÊ ËÌÁÓÓ, ËÏÔÏÒÙÊ ÂÅÒÅÔ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ, ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÄÏÂÁ×ÉÔØ ×ÏÄÅÒÖÉÍÏÅ, É ÓÏÈÒÁÎÑÅÔ ÄÁÎÎÙÅ ÎÁÚÁÄ × ÆÁÊÌ × ËÏÎÃÅ ÚÁÐÒÏÓÁ: <example id="example.destructors"> <title>PEAR: ÜÍÕÌÉÒÏ×ÁÎÎÙÅ ÄÅÓÔÒÕËÔÏÒÙ</title> <programlisting role="php"> require_once "PEAR.php"; class FileContainer extends PEAR { var $file = ''; var $contents = ''; var $modified = 0; function FileContainer($file) { $this->PEAR(); // ÜÔÁ ÓÔÒÏËÁ ×ÙÚÙ×ÁÅÔ ËÏÎÓÔÒÕËÔÏÒ ÒÏÄÉÔÅÌÑ $fp = fopen($file, "r"); if (!is_resource($fp)) { return; } while (!empty($data = fread($fp, 2048))) { $this->contents .= $data; } fclose($fp); } function append($str) { $this->contents .= $str; $this->modified++; } // "ÄÅÓÔÒÕËÔÏÒ" ÎÁÚ×ÁÎ ÔÁË ÖÅ, ËÁË É ËÏÎÓÔÒÕËÔÏÒ // ÎÏ Ó ÐÏÄÞÅÒËÉ×ÁÎÉÅÍ × ÎÁÞÁÌÅ ÎÁÚ×ÁÎÉÑ function _FileContainer() { if ($this->modified) { $fp = fopen($this->file, "w"); if (!is_resource($fp)) { return; } fwrite($fp, $this->contents); fclose($fp); } } } $fileobj =& new FileContainer("testfile"); $fileobj->append("this ends up at the end of the file\n"); // ëÏÇÄÁ ÚÁÐÒÏÓ ×ÙÐÏÌÎÅÎ É PHP ÚÁ×ÅÛÉÔ ÒÁÂÏÔÕ, "ÄÅÓÔÒÕËÔÏÒ" // $fileobj ÂÕÄÅÔ ×ÙÚ×ÁÎ É ÏÂÎÏ×ÉÔ ÆÁÊÌ ÎÁ ÄÉÓËÅ. </programlisting> </example> <note> <simpara> PEAR "ÄÅÓÔÒÕËÔÏÒÙ" ÉÓÐÏÌØÚÕÀÔ ÆÕÎËÃÉÀ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á PHP (<function>register_shutdown_function</function>), É ÐÏÜÔÏÍÕ ×Ù ÎÅ ÍÏÖÅÔÅ ÞÔÏ-ÌÉÂÏ ×Ù×ÏÄÉÔØ ÞÅÒÅÚ ÎÉÈ, ËÏÇÄÁ ðèð ÚÁÐÕÝÅÎ ÞÅÒÅÚ ×ÅÂ-ÂÒÏÕÚÅÒ. ìÀÂÏÊ ×Ù×ÏÄ × "ÄÅÓÔÒÕËÔÏÒÅ" ÂÕÄÅÔ ÐÏÔÅÒÑÎ, × ÏÔÌÉÞÉÅ ÏÔ ÓÉÔÕÁÃÉÉ, ËÏÇÄÁ PHP ÚÁÐÕÓËÁÅÔØÓÑ Ó ËÏÍÍÁÎÄÎÏÊ ÓÔÒÏËÉ. ÷ PHP ×ÅÒÓÉÉ 4.1 É ×ÙÛÅ ×Ù×ÏÄ ÎÁ ÜËÒÁÎ ÔÁË ÖÅ ÍÏÖÅÔ ÂÙÔØ ÇÅÎÅÒÉÒÏ×ÁÎ × ÄÅÓÔÒÕËÔÏÒÅ. </simpara> <simpara> ôÁË ÖÅ ÓÍÏÔÒÉÔÅ ÐÒÉÍÅÒ <link linkend="destructors.warning">ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ</link> Ï ÔÏÍ, ËÁË ÐÒÁ×ÉÌØÎÏ ÎÁÓÌÅÄÏ×ÁÔØ ÏÂßÅËÔÙ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÅÓÔÒÕËÔÏÒ. </simpara> </note> </para> <simpara> óÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ ÉÌÌÀÓÔÒÉÒÕÅÔ ÒÁÚÎÙÅ ÐÕÔÉ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÍÅÈÁÎÉÚÍÁ ÏÔÌÏ×Á ÏÛÉÂÏË PEAR. </simpara> <para> <example id="example.error1"> <title>PEAR error example (1)</title> <programlisting role="php"> function mysockopen($host = "localhost", $port = 8090) { $fp = fsockopen($host, $port, $errno, $errstr); if (!is_resource($fp)) { return new PEAR_Error($errstr, $errno); } return $fp; } $sock = mysockopen(); if (PEAR::isError($sock)) { print "mysockopen error: ".$sock->getMessage()."<BR>\n" } </programlisting> </example> </para> <simpara> üÔÏ ÐÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ ÏÂÒÁÂÏÔÞÉË ÄÌÑ Æ-ÃÉÉ <function>fsockopen</function>, ËÏÔÏÒÙÊ ×ÏÚ×ÒÁÝÁÅÔ ËÏÄ ÏÝÉÂËÉ É ÓÏÏÂÝÅÎÉÅ, ËÏÔÏÒÏÅ ×ÏÚ×ÒÁÔÉÌ fsockopen × ÏÂØÅËÔ ÏÛÉÂËÉ PEAR. <function>PEAR::isError</function> ÉÓÐÏÌØÚÕÅÔØÓÑ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ, Ñ×ÌÑÅÔØÓÑ ÌÉ ÄÁÎÎÏÅ ÚÎÁÞÅÎÉÅ ÏÛÉÂËÏÊ PEAR. </simpara> <simpara> òÅÖÉÍÙ PEAR_Error × ÜÔÏÍ ÐÒÉÍÅÒÅ ÐÒÏÓÔÏ ×ÏÚ×ÒÁÝÁÅÔ ÏÂØÅËÔ ÏÛÉÂËÉ, Á ×ÓÅ ÏÓÔÁÌØÎÏÅ ÏÓÔÁ×ÌÑÅÔ ÎÁ ÕÓÍÏÔÒÅÎÉÅ ÐÏÌØÚÏ×ÁÔÅÌÑ (ÐÒÏÇÒÁÍÍÉÓÔÁ). üÔÏ ÒÅÖÉÍ ÐÏ ÕÍÏÌÞÁÎÉÀ. </simpara> <simpara> ÷ ÓÌÅÄÕÀÝÅÍ ÐÒÉÍÅÒÅ ÍÙ ÐÏËÁÖÅÍ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÒÅÖÉÍ ÒÁÂÏÔÙ ÏÛÉÂÏË ÐÏ ÕÍÏÌÞÁÎÉÀ. </simpara> <para> <example id="example.error2"> <title>PEAR error example (2)</title> <programlisting role="php"> class TCP_Socket extends PEAR { var $sock; function TCP_Socket() { $this->PEAR(); } function connect($host, $port) { $sock = fsockopen($host, $port, $errno, $errstr); if (!is_resource($sock)) { return $this->raiseError($errstr, $errno); } } } $sock = new TCP_Socket; $sock->setErrorHandling(PEAR_ERROR_DIE); $sock->connect("localhost", 8090); print "still alive<BR>\n"; </programlisting> </example> </para> <simpara> úÄÅÓØ ÍÙ ÕÓÔÁÎÏ×ÉÌÉ ÒÅÖÉÍ ÒÁÂÏÔÙ ÏÛÉÂÏË ÐÏ ÕÍÏÌÞÁÎÉÀ <constant>PEAR_ERROR_DIE</constant>, É ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÌÉ ÎÉËÏËÏÇÏ ÒÅÖÉÍÁ × ×ÙÚÏ×Å raiseError (ÜÔÏ ÔÒÅÔÉÊ ÐÁÒÁÍÅÔÒ), raiseError ÉÓÐÏÌØÚÕÅÔ ÒÅÖÉÍ, ÚÁÄÁÎÎÙÊ ÐÏ ÕÍÏÌÞÁÎÉÀ É ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÐÒÉÌÏÖÅÎÉÑ ÅÓÌÉ fsockopen ÎÅ ÕÄÁÌÓÑ. </simpara> </refsect1> <refsect1> <title>éÓÐÏÌØÚÏ×ÁÎÉÅ ÇÌÏÂÁÌØÎÙÈ ÐÅÒÅÍÅÎÎÙÈ</title> <para> ëÌÁÓÓ PEAR ÉÓÐÏÌØÚÕÅÔ ÎÅËÏÔÏÒÙÅ ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÒÅÇÉÓÔÒÁÃÉÉ ÇÌÏÂÁÌØÎÙÈ ÕÍÏÌÞÁÎÉÊ, É ÔÁË ÖÅ ÓÐÉÓÏË ÏÂØÅËÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈÓÑ × ÄÅÓÔÒÕËÔÏÒÅ. ÷ÓÅ ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ ÁÓÓÏÃÉÉÒÕÀÔØÓÑ Ó ËÌÁÓÓÏÍ PEAR, ÉÍÅÀÔ <literal>_PEAR_</literal> ÐÒÅÆÉËÓ × ÉÍÅÎÉ. </para> <para> <variablelist> <varlistentry> <term>$_PEAR_default_error_mode</term> <listitem> <simpara> åÓÌÉ ÎÉËÁËÏÇÏ ÒÅÖÉÍÁ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË ÎÅ ÎÁÚÎÁÞÅÎÏ, ÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÄÁÎÎÙÊ ÒÅÖÉÍ. òÅÖÉÍÙ ÍÏÇÕÔ ÂÙÔØ: <constant>PEAR_ERROR_RETURN</constant>, <constant>PEAR_ERROR_PRINT</constant>, <constant>PEAR_ERROR_TRIGGER</constant>, <constant>PEAR_ERROR_DIE</constant> or <constant>PEAR_ERROR_CALLBACK</constant>. </simpara> <para> îÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÉ ÐÅÒÅÍÅÎÎÙÅ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_DIE); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_options</term> <listitem> <simpara> åÓÌÉ ÒÅÖÉÍ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË <constant>PEAR_ERROR_TRIGGER</constant>, ÜÔÏ ÚÎÁÞÉÔ, ÞÔÏ ÕÒÏ×ÅÎØ ÏÛÉÂÏË ( ÏÄÉÎ ÉÚ <constant>E_USER_NOTICE</constant>, <constant>E_USER_WARNING</constant> ÉÌÉ <constant>E_USER_ERROR</constant>). </simpara> <para> îÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_ERROR); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_callback</term> <listitem> <simpara> åÓÌÉ ÎÉÏÄÉÎ ÉÚ<replaceable>ÎÅÏÂÑÚÁÔÅÌØÎÙÈ</replaceable> ÐÁÒÁÍÅÔÒÏ× ÎÅ ÉÓÐÏÌØÚÏ×ÁÎ, ÐÒÉ ÏÛÉÂËÅ ÉÌÉ ÉÓÐÏÌØÚÏ×ÁÎ ÒÅÖÉÍ <constant>PEAR_ERROR_CALLBACK</constant>, ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÉÓÐÏÌØÚÕÅÔØÓÑ ÄÌÑ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback). üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ×ÒÅÍÅÎÎÏ ÐÅÒÅËÌÀÞÁÔØÓÑ ÍÅÖÄÕ ÒÅÖÉÍÁÍÉ É ×ÏÚ×ÒÁÝÁÔØÓÑ Ë callback-ÒÅÖÉÍÕ ,ÂÅÚ ÕËÁÚÁÎÉÑ callback-ÆÕÎËÃÉÉ ÓÎÏ×Á. óÔÒÏËÏ×ÁÑ ÐÅÒÅÍÅÎÎÁÑ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÆÕÎËÃÉÀ, Ä×Õ-ÜÌÅÍÅÎÔÎÙÊ ÍÁÓÓÉ× Ó ÏÂßÅËÔÏÍ × ÎÕÌÅ×ÏÍ ÉÎÄÅËÓÅ, É ÍÅÔÏÄÏÍ ÏÂØÅËÔÁ × ÐÅÒ×ÏÍ ÉÎÄÅËÓÅ (ÍÁÓÓÉ× ÉÓÐÏÌØÚÕÅÔØÓÑ, ÅÓÌÉ ×Ù ÎÁÚÎÁÞÁÅÔÅ callback-ÏÂØÅËÔ). </simpara> <para> é ÓÎÏ×Á, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÉ ÐÅÒÅÍÅÎÎÙÅ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "my_error_handler"); </programlisting> </informalexample> </para> <para> ÷ÏÔ ÐÒÉÍÅÒ ÔÏÇÏ, ËÁË ×Ù ÍÏÖÅÔÅ ÐÅÒÅËÌÀÞÁÔØÓÑ ÍÅÖÄÕ ÒÅÖÉÍÁÍÉ ÂÅÚ ÕËÁÚÁÎÉÑ callback-ÆÕÎËÃÉÉ ÓÎÏ×Á: <informalexample> <programlisting role="php"> PEAR::setErrorMode(PEAR_ERROR_CALLBACK, "my_function_handler"); do_some_stuff(); PEAR::setErrorMode(PEAR_ERROR_DIE); do_some_critical_stuff(); PEAR::setErrorMode(PEAR_ERROR_CALLBACK); // ÔÅÐÅÒØ ÓÎÏ×Á ÉÓÐÏÌØÚÕÅÔØÓÑ my_function_handler ËÁË ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË. </programlisting> </informalexample> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1> <title>íÅÔÏÄÙ</title> <refsect2 id="function.pear"> <title>PEAR::PEAR</title> <funcsynopsis> <funcprototype> <funcdef>PEAR()</funcdef> <void/> </funcprototype> </funcsynopsis> <para> üÔÏ ËÏÎÓÔÒÕËÔÏÒ ËÌÁÓÓÁ PEAR. ÷ÙÚÙ×ÁÊÔÅ ÅÇÏ ÉÚ ËÏÎÓÔÒÕËÔÏÒÁ ËÁÖÄÏÇÏ ËÌÁÓÓÁ, ËÏÔÏÒÙÊ ×Ù ÎÁÓÌÅÄÕÅÔÅ ÏÔ ËÌÁÓÓÁ PEAR. <example> <title>ðÒÉÍÅÒ ËÏÎÓÔÒÕËÔÏÒÁ ËÌÁÓÓÁ PEAR</title> <programlisting role="php"> class MyClass extends PEAR { var $foo, $bar; function MyClass($foo, $bar) { $this->PEAR(); $this->foo = $foo; $this->bar = $bar; } } </programlisting> </example> </para> </refsect2> <refsect2 id="function.-pear"> <title>PEAR::_PEAR</title> <funcsynopsis> <funcprototype> <funcdef>_PEAR()</funcdef> <void/> </funcprototype> </funcsynopsis> <para> üÔÏ ÄÅÓÔÒÕËÔÏÒ ËÌÁÓÓÁ PEAR. ïÎ ×ÙÚÙ×ÁÅÔØÓÑ ÐÏ ÚÁ×ÅÒÛÅÎÉÀ ÒÁÂÏÔÙ ÏÂßÅËÔÁ. </para> </refsect2> </refsect1> </refentry> <refentry id="class.pear-error"> <refnamediv> <refname>PEAR_Error</refname> <refpurpose>íÅÈÁÎÉÚÍ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË PEAR</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>$err = new <classname>PEAR_Error</classname>($msg);</synopsis> </refsynopsisdiv> <refsect1> <title>òÅÖÉÍÙ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË</title> <para> ïÂßÅËÔ ÏÛÉÂËÉ ÉÍÅÅÔ ÒÅÖÉÍ ÏÐÅÒÁÃÉÉ (ÏÂÒÁÂÏÔËÉ), ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ÏÄÎÏÊ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÏÎÓÔÁÎÔ: <variablelist id="error-modes"> <varlistentry id="constant.pear-error-return"> <term>PEAR_ERROR_RETURN</term> <listitem> <simpara> ðÒÏÓÔÏ ×ÏÚ×ÒÁÝÁÅÔ ïÂßÅËÔ ÏÛÉÂËÉ, ÎÅ ÄÅÌÁÑ ÎÉÞÅÇÏ ÏÓÏÂÅÎÎÏÇÏ × ËÏÎÓÔÒÕËÔÏÒÅ PEAR_Error. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-print"> <term>PEAR_ERROR_PRINT</term> <listitem> <simpara> ðÅÞÁÔÁÅÔ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ × ËÏÎÓÔÒÕËÔÏÒÅ. ÷ÙÐÏÌÎÅÎÉÅ ÎÅ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-trigger"> <term>PEAR_ERROR_TRIGGER</term> <listitem> <simpara> éÓÐÏÌØÚÕÅÔ ÆÕÎËÃÉÀ <function>trigger_error</function> ÄÌÑ ÏÂÒÁÂÏÔËÉ ×ÎÕÔÒÅÎÎÉÈ ÏÛÉÂÏË × PHP. ÷ÙÐÏÌÎÅÎÉÅ ÐÒÅÒÙ×ÁÅÔØÓÑ ÅÓÌÉ ×Ù ÏÐÒÅÄÅÌÉÔÅ Ó×ÏÊ ÓÏÂÓÔ×ÅÎÎÙÊ ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË PHP ÉÌÉ ÕÓÔÁÎÏ×ÉÔÅ ÓÔÒÏÇÏÓÔØ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË × E_USER_ERROR. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-die"> <term>PEAR_ERROR_DIE</term> <listitem> <simpara> Gtxfnftn ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËt É ×ÙÈÏÄÉÔ ÉÚ ÐÒÏÇÒÁÍÍÙ. ÷ÙÐÏÌÎÅÎÉÅ ÅÓÔÅÓÔ×ÅÎÎÏ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-callback"> <term>PEAR_ERROR_CALLBACK</term> <listitem> <simpara> éÓÐÏÌØÚÕÅÔ callback-ÆÕÎËÃÉÀ ÉÌÉ ÍÅÔÏÄ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË. ÷ÙÐÏÌÎÅÎÉÅ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1> <title>ó×ÏÊÓÔ×Á</title> <simpara></simpara> </refsect1> <refsect1> <title>íÅÔÏÄÙ</title> <funcsynopsis> <funcprototype> <funcdef><function>PEAR_Error::PEAR_Error</function></funcdef> <paramdef> <parameter><optional>message</optional></parameter> <parameter><optional>code</optional></parameter> <parameter><optional>mode</optional></parameter> <parameter><optional>options</optional></parameter> <parameter><optional>userinfo</optional></parameter> </paramdef> </funcprototype> </funcsynopsis> <refsect2> <title>ïÐÉÓÁÎÉÅ</title> <para> ëÏÎÓÔÒÕËÔÏÒ PEAR_Error. ðÁÒÁÍÅÔÒÙ: <variablelist> <varlistentry> <term>message</term> <listitem> <simpara> ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ, ÐÏ ÕÍÏÌÞÁÎÉÀ "unknown error". </simpara> </listitem> </varlistentry> <varlistentry> <term>code</term> <listitem> <simpara> ËÏÄ ÏÛÉÂËÉ (ÎÅ ÏÂÑÚÁÔÅÌØÎÙÊ) </simpara> </listitem> </varlistentry> <varlistentry> <term>mode</term> <listitem> <simpara> òÅÖÉÍ ÏÂÒÁÂÏÔËÉ. óÍ. ÒÁÚÄÅÌ <link linkend="error-modes">òÅÖÉÍÙ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË</link> ÄÌÑ ÄÅÔÁÌÅÊ. </simpara> </listitem> </varlistentry> <varlistentry> <term>options</term> <listitem> <simpara> åÓÌÉ òÅÖÉÍ ÏÂÒÁÂÏÔËÉ ÍÏÖÅÔ ÉÍÅÔØ ×ÈÏÄÑÝÉÅ ÏÐÃÉÉ, ÉÓÐÏÌØÚÕÊÔÅ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÄÌÑ ÎÉÈ. îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÔÏÌØËÏ "trigger" É "callback" ÒÅÖÉÍÙ ÉÓÐÏÌØÚÕÀÔ ×ÈÏÄÑÝÉÅ ÏÐÃÉÉ. äÌÑ "trigger" ÒÅÖÉÍÁ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÍÏÖÅÔ ÂÙÔØ ÏÄÉÎ ÉÚ <constant>E_USER_NOTICE</constant>, <constant>E_USER_WARNING</constant> ÉÌÉ <constant>E_USER_ERROR</constant>. äÌÑ "callback" ÒÅÖÉÍÁ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÄÏÌÖÅÎ ÂÙÔØ ÉÍÑ callback-ÆÕÎËÃÉÉ (string) ÉÌÉ Ä×Õ-ÜÌÅÍÅÎÔÎÙÊ ÍÁÓÓÉ× (object,string) ÐÒÅÄÓÔÁ×ÌÑÀÝÉÊ ÉÍÅÎÁ ÏÂßÅËÔÁ É ÍÅÔÏÄÁ. </simpara> </listitem> </varlistentry> </variablelist> </para> </refsect2> </refsect1> </refentry> </reference> <!-- 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 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 -->
Index: peardoc/ru/core/db.xml +++ peardoc/ru/core/db.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="core.db"> <title>PEAR DB: ÕÎÉÆÉÃÉÒÏ×ÁÎÎÙÊ API ÄÌÑ ÄÏÓÔÕÐÁ Ë SQL-ÂÁÚÁÍ ÄÁÎÎÙÈ</title> <titleabbrev>PEAR DB</titleabbrev> <partintro> <simpara> üÔÏÔ ÒÁÚÄÅÌ ÏÐÉÓÙ×ÁÅÔ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ PEAR ÁÂÓÔÒÁËÔÎÙÊ ÓÌÏÊ ÄÌÑ ÄÏÓÔÕÐÁ Ë âä. PEAR database abstraction layer. </simpara> </partintro> <refentry id="core.db.dsn"> <refnamediv> <refname>DSN</refname> <refpurpose>äÁÎÎÙÅ Ï ÉÓÔÏÞÎÉËÅ (data source name)</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> äÌÑ ÓÏÅÄÉÎÅÎÉÑ Ó âä ÞÅÒÅÚ PEAR::DB, ×Ù ÄÏÌÖÎÙ ÐÒÏÐÉÓÁÔØ ËÏÒÒÅËÔÎÏÙÅ <acronym>ÄÁÎÎÙÅ Ï ÉÓÔÏÞÎÉËÅ (DSN)</acronym>. DSN ÓÏÓÔÏÉÔ ÉÚ ÓÌÅÄÕÀÝÉÈ ÞÁÓÔÅÊ, </simpara> <para> <simplelist> <member> <parameter>phptype</parameter>: ôÉÐ âä ÉÓÐÏÌØÚÕÅÍÙÊ × PHP (ÎÁÐÒ. mysql, odbc É Ô.Ä.) </member> <member> <parameter>dbsyntax</parameter>: Database used with regards to SQL syntax etc. </member> <member> <parameter>protocol</parameter>: ðÒÏÔÏËÏÌ ÓÏÅÄÉÎÅÎÉÑ (ÎÁÐÒ. tcp, unix). </member> <member> <parameter>hostspec</parameter>: óÐÅÃÉÆÉËÁÃÉÑ ÓÅÒ×ÅÒÁ (ÉÍÑ_ÓÅÒ×ÅÒÁ[:ÐÏÒÔ]) </member> <member> <parameter>database</parameter>: îÁÚ×ÁÎÉÅ ÂÁÚÙ ÄÁÎÎÙÈ, Ó ËÏÔÏÒÏÊ ×Ù ÈÏÔÉÔÅ ÒÁÂÏÔÁÔØ ÎÁ óõâä. </member> <member> <parameter>username</parameter>: éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÄÌÑ ÌÏÇÉÎÁ. </member> <member> <parameter>password</parameter>: ðÁÒÏÌØ ÄÌÑ ÌÏÇÉÎÁ. </member> </simplelist> </para> <para> æÏÒÍÁÔ ÐÏÌÎÏÊ ÆÏÒÍÙ DSN: <programlisting role="url"> phptype(dbsyntax)://username:password@protocol+hostspec/database </programlisting> ÷ÁÒÉÁÃÉÉ: <programlisting role="url"> phptype://username:password@protocol+hostspec:110//usr/db_file.db phptype://username:password@hostspec/database_name phptype://username:password@hostspec phptype://username@hostspec phptype://hostspec/database phptype://hostspec phptype(dbsyntax) phptype </programlisting> îÁ ÔÅËÕÝÉÊ ÍÏÍÅÎÔ ÐÏÄÄÅÒÖÕÀÔÓÑ ÓÌÅÄÕÀÝÉÅ âä: <programlisting role="configure"> mysql -> MySQL pgsql -> PostgreSQL ibase -> InterBase msql -> Mini SQL mssql -> Microsoft SQL Server oci8 -> Oracle 7/8/8i odbc -> ODBC (Open Database Connectivity) sybase -> SyBase ifx -> Informix fbsql -> FrontBase </programlisting> </para> <para> <warning id="core.db.features.warning"> <title>÷ÁÖÎÏ!</title> <para> úÁÍÅÔØÔÅ, ÞÔÏ ÎÅËÏÔÏÒÙÅ ×ÏÚÍÏÖÎÏÓÔÉ ÍÏÇÕÔ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÔØÓÑ ×ÓÅÍÉ óõâä. ïÂÒÁÔÉÔÅÓØ ÐÏÖÁÌÕÊÓÔÁ Ë ÄÏËÕÍÅÎÔÕ ÓÔÁÔÕÓÁ PEAR DB ÒÁÓÛÉÒÅÎÉÊ, ËÏÔÏÒÙÊ ÒÁÚÍÅÝÅÎ: <quote><pear base dir>/DB/STATUS</quote> ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÄÅÔÁÌØÎÏÇÏ ÓÐÉÓËÁ Ï ÔÏÍ ËÁËÉÅ ×ÏÚÍÏÖÎÏÓÔÉ ÐÏÄÄÅÒÖÉ×ÁÀÔØÓÑ ËÁÖÄÏÊ ÉÚ óõâä. </para> </warning> </para> </refsect1> </refentry> <refentry id="core.db.connect"> <refnamediv> <refname>Connect</refname> <refpurpose>óÏÅÄÉÎÅÎÉÅ É ÏÔÓÏÅÄÉÎÅÎÉÅ ÏÔ âä.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> äÌÑ ÓÏÅÄÉÎÅÎÉÑ Ó ÂÁÚÏÊ ÄÁÎÎÙÈ ×Ù ÄÏÌÖÎÙ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÕÎËÃÉÀ <function>DB::connect</function>, ËÏÔÏÒÁÑ ÔÒÅÂÕÅÔ ÐÒÁ×ÉÌØÎÙÊ <link linkend="core.db.dsn">DSN</link> ËÁË ÐÁÒÁÍÅÔÒ É ÎÅÏÂÑÚÁÔÅÌØÎÙÊ ÐÁÒÁÍÅÔÒ (ÂÕÌÅ×ÙÊ), ËÏÔÏÒÙÊ ÏÐÒÅÄÅÌÑÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ÕÓÔÏÊÞÉ×ÏÅ (persistent) ÓÏÅÄÉÎÅÎÉÅ ÉÌÉ ÎÅÔ. ÷ ÓÌÕÞÁÅ ÎÏÒÍÁÌØÎÏÇÏ ÓÏÅÄÉÎÅÎÉÑ ×Ù ÐÏÌÕÞÉÔÅ ÜËÚÅÍÐÌÑÒ ËÌÁÓÓÁ âä. îÁÓÔÏÑÔÅÌØÎÏ ÒÅËÕÍÅÎÄÕÅÔØÓÑ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÌÑ ÐÒÏ×ÅÒËÉ ×ÏÚ×ÒÁÝÁÅÍÏÇÏ ÚÎÁÞÅÎÉÑ ÆÕÎËÃÉÀ <function>DB::isError</function>. äÌÑ ÏÔÓÏÅÄÉÎÅÎÉÑ ÏÔ âä ÉÓÐÏÌØÚÕÊÔÅ ÍÅÔÏÄ <function>disconnect</function> ÜËÚÅÍÐÌÑÒÁ ×ÁÛÅÇÏ ËÌÁÓÓÁ âä. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php require_once 'DB.php'; $user = 'foo'; $pass = 'bar'; $host = 'localhost'; $db_name = 'clients_db'; // Data Source Name: üÔÏ ÕÎÉ×ÅÒÓÁÌØÎÁÑ ÓÔÒÏËÁ ÓÏÅÄÉÎÅÎÉÑ. $dsn = "mysql://$user:$pass@$host/$db_name"; // DB::connect ×ÏÚ×ÒÁÔÉÔ DB ÏÂßÅËÔ ÐÒÉ ÕÄÁÞÎÏÍ ÓÏÅÄÉÎÅÎÉÉ // ÉÌÉ PEAR DB Error ÏÂßÅËÔ ÐÒÉ ÏÛÉÂËÅ. $db = DB::connect($dsn, true); // áÌØÔÅÒÎÁÔÉ×Á: $db = DB::connect($dsn); // ó ÐÏÍÏÝØÀ DB::isError ×Ù ÍÏÖÅÔÅ ÏÔÌÉÞÉÔØ ÏÛÉÂËÕ ÏÔ // ÎÏÒÍÁÌØÎÏÇÏ ÓÏÅÄÉÎÅÎÉÑ. if (DB::isError($db)) { die ($db->getMessage()); } .... // ÷Ù ÍÏÖÅÔÅ ÏÔÓÏÅÄÉÎÉÔØÓÑ ÏÔ ÂÁÚÙ Ó ÐÏÍÏÝØÀ: $db->disconnect(); ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.query"> <refnamediv> <refname>Query</refname> <refpurpose>÷ÙÐÏÌÎÅÎÉÅ ÚÁÐÒÏÓÏ× Ë ÂÁÚÅ ÄÁÎÎÙÈ.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> þÔÏÂÙ ×ÙÐÏÌÎÉÔØ ÚÁÐÒÏÓ Ë ÂÁÚÅ ÄÁÎÎÙÈ ×Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÆÕÎËÃÉÀ <function>query</function>, ËÏÔÏÒÁÑ ÐÒÉÎÉÍÁÅÔ ÓÔÒÏËÕ ÚÁÐÒÏÓÁ ËÁË ÁÒÇÕÍÅÎÔ. ÷ ÓÌÕÞÁÅ ÏÛÉÂËÉ ×ÁÍ ×ÏÚ×ÒÁÔÉÔØÓÑ ÏÂßÅËÔ DB Error, ÐÒÏ×ÅÒÑÊÔÅ ÅÇÏ Ó ÐÏÍÏÝØÀ <function>DB::isError</function> ÆÕÎËÃÉÉ. ðÒÉ ÕÄÁÞÎÏÍ (ÎÅÔ ÏÛÉÂÏË) ÚÁÐÒÏÓÅ ×Ù ÐÏÌÕÞÉÔÅ <parameter>DB_OK</parameter> (ÐÒÅÄÏÐÒÅÄÅÌÅÎÎÁÑ PEAR::DB ËÏÎÓÔÁÎÔÁ) ÉÌÉ ÅÓÌÉ ×Ù ×ÙÐÏÌÎÑÌÉ <parameter>SELECT</parameter>-×ÙÒÁÖÅÎÉÅ -- DB Result ÏÂßÅËÔ ÒÅÚÕÌØÔÁÔÁ. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php // ëÏÇÄÁ ×Ù ÉÍÅÅÔÅ DB ÏÂßÅËÔ... $sql = "select * from clients"; $result = $db->query($sql); // ÷ÓÅÇÄÁ ÐÒÏ×ÅÒÑÊÔÅ ÎÅ Ñ×ÌÑÅÔØÓÑ ÌÉ $result ÏÛÉÂËÏÊ if (DB::isError($result)) { die ($result->getMessage()); } .... ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.fetch"> <refnamediv> <refname>Fetch</refname> <refpurpose>÷ÙÂÏÒËÁ ÓÔÒÏË ÉÚ ÚÁÐÒÏÓÁ.</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <refsect2> <title>æÕÎËÃÉÉ ×ÙÂÏÒËÉ.</title> <simpara> <classname>DB_Result</classname> ÏÂßÅËÔ ÏÂÅÓÐÅÞÉ×ÁÅÔ Ä×Å ÆÕÎËÃÉÉ ÄÌÑ ×ÙÂÏÒËÉ ÓÔÒÏË: <function>fetchRow</function> É <function>fetchInto</function>. <function>fetchRow</function> ×ÏÚ×ÒÁÝÁÅÔ ÓÔÒÏËÕ, null(ÎÏÌØ) ÅÓÌÉ ÄÁÎÎÙÈ ÂÏÌØÛÅ ÎÅÔ ÉÌÉ <classname>DB_Error</classname>, ÅÓÌÉ ÐÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ. <function>fetchInto</function> ÔÒÅÂÕÅÔ ÐÅÒÅÍÅÎÎÕÀ, ËÏÔÏÒÁÑ ÂÕÄÅÔ ÐÅÒÅÄÁÎÁ ÐÏ ÓÓÙÌËÅ Ë ÓÔÒÏËÅ ÒÅÚÕÌØÔÁÔÁ. ïÎÁ ×ÏÚ×ÒÁÔÉÔ ÎÏÌØ ËÏÇÄÁ ÒÅÚÕÌØÔÁÔ ÂÕÄÅÔ ÐÕÓÔ ÉÌÉ <classname>DB_Error</classname> ÐÒÉ ÏÛÉÂËÅ. </simpara> <para> <programlisting role="php"> <![CDATA[ <?php ... $db = DB::connect($dsn); $res = $db->query("select * from mytable"); // ÷ÙÂÉÒÁÅÍ ËÁÖÄÕÀ ÓÔÒÏËÕ ÎÁ ËÁÖÄÏÊ ÉÔÅÒÁÃÉÉ ÐÏËÁ // ÎÅ ×ÙÂÅÒÅÍ ×ÓÅ ÓÔÒÏËÉ while ($row = $result->fetchRow()) { $id = $row[0]; } // éÌÉ: // ÎÁÐÒÉÍÅÒ ÉÓÐÏÌØÚÕÑ fetchInto() while ($result->fetchInto($row)) { $id = $row[0]; } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>÷ÙÂÏÒ ÆÏÒÍÁÔÁ ×ÙÂÉÒÁÅÍÙÈ ÓÔÒÏË</title> <para> ðÏÄÄÅÒÖÉ×ÁÅÍÙÅ ÒÅÖÉÍÙ ×ÙÂÏÒËÉ: <itemizedlist> <listitem> <para> <parameter>DB_FETCHMODE_ORDERED</parameter> (ÐÏ ÕÍÏÌÞÁÎÉÀ) </para> <para> æÕÎËÃÉÉ <function>fetch*</function> ×ÏÚ×ÒÁÝÁÀÔ ÎÕÍÅÒÏ×ÁÎÙÊ ÍÁÓÓÉ×. îÕÍÅÒÁÃÉÑ ÂÅÒÅÔØÓÑ ÉÚ select-ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_ORDERED); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: array ( 0 => <column "id" data>, 1 => <column "name" data>, 2 => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row[0]; $name = $row[1]; $email = $row[2]; ?> ]]> </programlisting> </para> </listitem> <listitem> <para> <parameter>DB_FETCHMODE_ASSOC</parameter> </para> <para> ÷ÏÚ×ÒÁÝÁÅÔ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× Ó ÉÍÅÎÁÍÉ ÓÔÏÌÂÃÏ× ËÁË ËÌÀÞÁÍÉ ÍÁÓÓÉ×Á. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_ASSOC); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: array ( 'id' => <column "id" data>, 'name' => <column "name" data>, 'email' => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row['id']; $name = $row['name']; $email = $row['email']; ?> ]]> </programlisting> </para> </listitem> <listitem> <para> <parameter>DB_FETCHMODE_OBJECT</parameter> </para> <para> ÷ÏÚ×ÒÁÝÁÅÔ DB_row ÏÂßÅËÔ Ó ÉÍÅÎÁÍÉ ÓÔÏÌÂÃÏ× ËÁË Ó×ÏÊÓÔ×ÁÍÉ ÏÂßÅËÔÁ. <programlisting role="php"> <![CDATA[ <?php $res = $db->query('select id, name, email from users'); $row = $res->fetchRow(DB_FETCHMODE_OBJECT); /* $row ÂÕÄÅÔ ÓÏÄÅÒÖÁÔØ: db_row Object ( [id] => <column "id" data>, [name] => <column "name" data>, [email] => <column "email" data> ) */ // äÏÓÔÕÐ Ë ÄÁÎÎÙÍ ËÁË: $id = $row->id; $name = $row->name; $email = $row->email; ?> ]]> </programlisting> </para> </listitem> </itemizedlist> </para> </refsect2> <refsect2> <title>õÓÔÁÎÏ×ËÁ ÆÏÒÍÁÔÁ ×ÙÂÉÒÁÅÍÙÈ ÓÔÒÏË</title> <para> ÷Ù ÍÏÖÅÔÅ ÕÓÔÁÎÁ×ÌÉ×ÁÔØ ÆÏÒÍÁÔ ÄÌÑ ËÁÖÄÏÇÏ ×ÙÚÏ×Á ÉÌÉ ÄÌÑ ×ÓÅÇÏ ÜËÚÅÍÐÌÑÒÁ ËÌÁÓÓÁ DB. <programlisting role="php"> <![CDATA[ <?php // 1) õÓÔÁÎÏ×ËÁ ÒÅÖÉÍÁ ÄÌÑ ËÁÖÄÏÇÏ ×ÙÚÏ×Á: while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) { $id = $row['id']; } // 2) õÓÔÁÎÏ×ËÁ ÒÅÖÉÍÁ ÄÌÑ ×ÓÅÈ ×ÙÚÏ×Ï×: $db = DB::connect($dsn); // ÚÄÅÓØ ÕÓÔÁÎÏ×ÉÍ ÒÅÖÉÍ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÜÔÏÇÏ ÜËÚÅÍÐÌÑÒÁ Pear DB. // (ÄÌÑ ×ÓÅÈ ÚÁÐÒÏÓÏ×) $db->setFetchMode(DB_FETCHMODE_ASSOC); $result = $db->query(...); while ($row = $result->fetchRow()) { $id = $row['id']; } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>÷ÙÂÏÒËÁ ÓÔÒÏË ÐÏ ÎÏÍÅÒÕ</title> <para> óÉÓÔÅÍÁ ×ÙÂÏÒËÉ ÓÔÒÏË ÉÚ ÚÁÐÒÏÓÁ PEAR DB ÔÁËÖÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÄÏÐÏÌÎÉÔÅÌØÎÙÅ ÐÁÒÁÍÅÔÒÙ ÄÌÑ ×ÙÂÉÒÁÅÍÏÇÏ ×ÙÒÁÖÅÎÉÑ. ÷Ù ÍÏÖÅÔÅ ×ÙÂÉÒÁÔØ ÓÔÒÏËÉ ÉÚ ÚÁÐÒÏÓÁ ÐÏ ÎÏÍÅÒÕ. üÔÏ ÏÓÏÂÅÎÎÏ ÐÏÌÅÚÎÏ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ×Ù×ÏÄÉÔØ ÞÁÓÔÉ ×ÓÅÇÏ ÚÁÐÒÏÓÁ (ÎÁÐÒÉÍÅÒ ÐÒÉ ÐÏÓÔÒÏÅÎÉÉ ÒÁÚÂÉÔÏÇÏ ÎÁ ÓÔÒÁÎÉÃÙ HTML ÓÐÉÓËÁ), ×ÙÂÏÒËÉ ÐÏ ÓÐÅÃÉÁÌØÎÏÍÕ ÐÏÒÑÄËÕ É Ô.Ä. <programlisting role="php"> <![CDATA[ <?php ... // ÓÔÒÏËÁ Ó ËÏÔÏÒÏÊ ÎÁÞÉÎÁÔØ ×ÙÂÏÒËÕ $from = 50; // ÓËÏÌØËÏ ÒÅÚÕÌØÔÁÔÏ× ÎÁ ÓÔÒÁÎÉÃÕ $res_per_page = 10; // ÐÏÓÌÅÄÎÑÑ ÓÔÒÏËÁ ×ÙÂÏÒËÉ ÄÌÑ ÜÔÏÊ ÓÔÒÁÎÉÃÙ $to = $from + $res_per_page; foreach (range($from, $to) as $rownum) { if (!$row = $res->fetchrow($fetchmode, $rownum)) { break; } $id = $row[0]; .... } ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>ïÓ×ÏÂÏÖÄÅÎÉÅ ÐÁÍÑÔÉ, ÚÁÎÑÔÏÊ ÒÅÚÕÌØÔÁÔÏÍ (free)</title> <para> üÔÏ ÒÅËÏÍÅÎÄÕÅÔØÓÑ ÄÌÑ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ Ó ÒÅÚÕÌØÔÁÔÏÍ ÚÁÐÒÏÓÁ ÄÌÑ ÜËÏÎÏÍÉÉ ÐÁÍÑÔÉ. éÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÀ <function>free</function> ÄÌÑ ÜÔÏÇÏ. <programlisting role="php"> <![CDATA[ <?php ... $result = $db->query('SELECT * FROM clients'); while ($row = $result->fetchRow()) { ... } $result->free(); ?> ]]> </programlisting> </para> </refsect2> <refsect2> <title>âÙÓÔÒÏÅ ÐÏÌÕÞÅÎÉÅ ÄÁÎÎÙÈ ÉÚ ÚÁÐÒÏÓÁ</title> <para> PEAR DB ÐÒÅÄÌÁÇÁÅÔ ÎÅËÏÔÏÒÙÅ ÓÐÅÃ. ÐÕÔÉ ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÉÎÆÏÒÍÁÃÉÉ ÉÚ ÚÁÐÒÏÓÁ ÂÅÚ ÉÓÐÏÌØÚÏ×ÁÎÉÑ <function>fetch*</function> ÆÕÎËÃÉÊ É ÃÉËÌÁ ÐÏ ÒÅÚÕÌØÔÁÔÕ. </para> <para> <function>getOne</function> ×ÏÚ×ÒÁÝÁÅÔ ÐÅÒ×ÙÊ ÒÅÚÕÌØÔÁÔ ÐÅÒ×ÏÇÏ ÓÔÏÌÂÃÁ ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ $numrows = $db->getOne('select count(id) from clients'); ]]> </programlisting> </para> <para> <function>getRow</function> ×ÏÚ×ÒÁÝÁÅÔ ÐÅÒ×ÕÀ ÓÔÒÏËÕ ËÁË ÍÁÓÓÉ×. <programlisting role="php"> <![CDATA[ $sql = 'select name, address, phone from clients where id=1'; if (is_array($row = $db->getRow($sql))) { list($name, $address, $phone) = $row; } ]]> </programlisting> </para> <para> <function>getCol</function> ×ÏÚ×ÒÁÝÁÅÔ ÍÁÓÓÉ× Ó ÄÁÎÎÙÍÉ ÕËÁÚÁÎÎÏÇÏ ÓÔÏÌÂÃÁ. îÏÍÅÒ ÓÔÏÌÂÃÁ ÐÅÒÅÄÁÅÔØÓÑ ËÁË ×ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ. <programlisting role="php"> <![CDATA[ $all_client_names = $db->getCol('select name from clients'); ]]> </programlisting> ÷ÙÒÁÖÅÎÉÅ ×ÙÛÅ ÍÏÖÅÔ ×ÅÒÎÕÔØ, ÎÁÐÒÉÍÅÒ: $all_client_names = array('Stig', 'Jon', 'Colin'); </para> <para> <function>getAssoc</function> ×ÏÚ×ÒÁÝÁÅÔ ×ÅÓØ ÒÅÚÕÌØÔÁÔ ÚÁÐÒÏÓÁ ËÁË ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ×, ÉÓÐÏÌØÚÕÑ ÐÅÒ×ÙÊ ÓÔÏÌÂÅà ËÁË ËÌÀÞ. <programlisting role="php"> <![CDATA[ $data = getAssoc('SELECT name, surname, phone FROM mytable') /* ÷ÏÚ×ÒÁÔÉÔ: array( 'Peter' => array('Smith', '944679408'), 'Tomas' => array('Cox', '944679408'), 'Richard' => array('Merz', '944679408') ) */ ]]> </programlisting> </para> <para> <function>getAll</function> ×ÏÚ×ÒÁÝÁÅÔ ×ÓÅ ÓÔÒÏËÉ ÉÚ ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ $data = getAll('SELECT id, text, date FROM mytable'); /* ÷ÏÚ×ÒÁÔÉÔ: array( 1 => array('4', 'four', '2004'), 2 => array('5', 'five', '2005'), 3 => array('6', 'six', '2006') ) */ ]]> </programlisting> </para> <para> óÅÍØÑ <function>get*</function> ÆÕÎËÃÉÊ ÄÅÌÁÅÔ ×ÓÀ ÇÒÑÚÎÕÀ ÒÁÂÏÔÕ ÚÁ ×ÁÓ, ÔÁËÕÀ ËÁË: ÚÁÐÒÏÓ Ë ÂÁÚÅ, ×ÙÂÏÒËÁ ÒÅÚÕÌØÔÁÔÏ× É ÏÓ×ÏÂÏÖÄÅÎÉÅ ÐÁÍÑÔÉ. úÁÍÅÔØÔÅ, ÞÔÏ ×ÓÅ ÆÕÎËÃÉÉ PEAR DB ×ÏÚ×ÒÁÝÁÀÔ <classname>PEAR DB_error</classname> ÏÂßÅËÔ ÐÒÉ ÏÛÉÂËÅ. </para> </refsect2> <refsect2> <title>ðÏÌÕÞÅÎÉÅ ÂÏÌØÛÅÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÅÚÕÌØÔÁÔÅ ÚÁÐÒÏÓÁ</title> <para> ó ÐÏÍÏÝØÀ PEAR DB ×Ù ÉÍÅÅÔÅ ÍÎÏÖÅÓÔ×Ï ÓÐÏÓÏÂÏ× ÄÌÑ ÐÏÌÕÞÅÎÉÑ ÐÏÌÅÚÎÏÊ ÉÎÆÏÒÍÁÃÉÉ Ï ÒÅÚÕÌØÔÁÔÅ ÚÁÐÒÏÓÁ. ôÁËÉÈ ËÁË: <itemizedlist> <listitem> <para> <function>numRows</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÒÏË, ËÏÔÏÒÙÅ ×ÏÚ×ÒÁÔÉÌ "SELECT" ÚÁÐÒÏÓ. <programlisting role="php"> <![CDATA[ // þÉÓÌÏ ÓÔÒÏË. echo $res->numRows(); ]]> </programlisting> </para> </listitem> <listitem> <para> <function>numCols</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÏÌÂÃÏ×, ËÏÔÏÒÙÅ ×ÏÚ×ÒÁÔÉÌ "SELECT" ÚÁÐÒÏÓ. <programlisting role="php"> <![CDATA[ // þÉÓÌÏ ÓÔÏÌÂÃÏ×. echo $res->numCols(); ]]> </programlisting> </para> </listitem> <listitem> <para> <function>affectedRows</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÞÉÓÌÏ ÓÔÒÏË, ËÏÔÏÒÙÅ ÂÙÌÉ ÉÚÍÅÎÅÎÙ Ó ÐÏÍÏÝØÀ ÚÁÐÒÏÓÏ× ("INSERT", "UPDATE" ÉÌÉ "DELETE"). <programlisting role="php"> <![CDATA[ // úÁÐÏÍÎÉÔÅ, ÞÔÏ ÜÔÏ ×ÙÒÁÖÅÎÉÅ ÎÅ ×ÏÚ×ÒÁÝÁÅÔ ÏÂßÅËÔ ÒÅÚÕÌØÔÁÔÁ. $db->query('DELETE * FROM clients'); echo 'ñ ÕÄÁÌÉÌ ' . $db->affectedRows() . ' ËÌÉÅÎÔÏ×'; ]]> </programlisting> </para> </listitem> <listitem> <para> <function>tableInfo</function>: ÷ÏÚ×ÒÁÝÁÅÔ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× Ó ÉÎÆÏÒÍÁÃÉÅÊ Ï ×ÏÚ×ÒÁÝÁÅÍÙÈ ÐÏÌÑÈ "SELECT" ÚÁÐÒÏÓÁ. <programlisting role="php"> <![CDATA[ // éÎÆÏÒÍÁÃÉÑ Ï ÔÁÂÌÉÃÅ print_r($res->tableInfo()); ]]> </programlisting> </para> </listitem> </itemizedlist> îÅ ÚÁÂÙ×ÁÊÔÅ ÐÒÏ×ÅÒÑØ, ÎÅ Ñ×ÌÑÅÔÓÑ ÌÉ ×ÏÚ×ÒÁÝÁÅÍÙÊ ×ÙÛÉÍ ÄÅÊÓÔ×ÉÅÍ ÒÅÚÕÌØÔÁÔ ÏÂßÅËÔÏÍ ÏÛÉÂËÉ PEAR Error. åÓÌÉ ×Ù ÐÏÌÕÞÉÔÅ ÓÏÏÂÝÅÎÉÅ ÔÉÐÁ: <quote>DB_error: database not capable</quote>, ÜÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×ÁÛ óõâä ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÜÔÉÈ ÄÅÊÓÔ×ÉÊ. </para> </refsect2> </refsect1> </refentry> <refentry id="core.db.sequences"> <refnamediv> <refname> Sequences</refname> <refpurpose>ðÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ × âä</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <para> ðÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ - ÜÔÏ ÐÕÔØ ÄÌÑ ÓÏÚÄÁÎÉÑ ÕÎÉËÁÌØÎÙÈ ID ÄÌÑ ÓÔÒÏË ÄÁÎÎÙÈ. åÓÌÉ ×Ù ÉÓÐÏÌØÚÕÅÔÅ × ÒÁÂÏÔÅ âä, ÔÁËÉÅ ËÁË MySQL, ÄÕÍÁÊÔÅ Ï ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÈ, ËÁË Ï ÄÒÕÇÏÍ ÐÕÔÉ ÓÏÚÄÁÎÉÑ ÐÏÌÅÊ ÔÉÐÁ AUTO_INCREMENT. üÔÏ ÏÞÅÎØ ÐÒÏÓÔÏ, ÓÎÁÞÁÌÁ ÚÁÐÒÁÛÉ×ÁÅÔÅ ID, Á ÐÏÔÏÍ ×ÓÔÁ×ÌÑÅÔÅ ÜÔÏ ÚÎÁÞÅÎÉÅ × ÐÏÌÅ Ó ID ÎÏ×ÏÊ ÓÔÒÏËÉ, ËÏÔÏÒÕÀ ×Ù ×ÓÔÁ×ÌÑÅÔÅ × ÔÁÂÌÉÃÕ. ÷Ù ÍÏÖÅÔÅ ÉÍÅÔØ ÂÅÌÅÅ ÏÄÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ ÄÌÑ ×ÓÅÈ ×ÁÛÉÈ ÔÁÂÌÉÃ, ÐÒÏÓÔÏ ÉÓÐÏÌØÚÕÊÔÅ ×ÓÅÇÄÁ ÏÄÎÕ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ ÄÌÑ ËÏÎËÒÅÔÎÏÊ ÔÁÂÌÉÃÙ. äÌÑ ÐÏÌÕÞÅÎÉÑ ÚÎÁÞÅÎÉÑ ÕÎÉËÁÌØÎÏÇÏ ID ÉÓÐÏÌØÚÕÊÔÅ ÆÕÎËÃÉÀ <function>nextId</function>, ÅÓÌÉ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ(sequence) ÎÅ ÓÕÝÅÓÔ×ÕÅÔ - ÏÎÁ ÂÕÄÅÔ ÓÏÚÄÁÎÁ. <programlisting role="php"> <![CDATA[ <?php ... $id = $db->nextId('mySequence'); // éÓÐÏÌØÚÕÊÔÅ ID × ×ÁÛÅÍ INSERT ÚÁÐÒÏÓÅ $res = $db->query("INSERT INTO myTable (id,text) VALUES ($id,'foo')"); ... ?> ]]> </programlisting> </para> </refsect1> </refentry> <refentry id="core.db.execute"> <refnamediv> <refname> Execute </refname> <refpurpose>ðÏÄÇÏÔÏ×ËÁ É ÷ÙÐÏÌÎÅÎÉÅ/íÕÌØÔÉ÷ÙÐÏÌÎÅÎÉÅ</refpurpose> </refnamediv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <refsect2 id="core.db.prep_exec.purpose"> <title>ãÅÌØ</title> <para> <function>Prepare</function> É <function>execute*</function> ÆÕÎËÃÉÉ ÄÁÀÔ ×ÁÍ ÓÉÌÕ É ÇÉÂËÏÓÔØ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÚÁÐÒÏÓÏ×À ÷Ù ÍÏÖÅÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÉÈ, ËÏÇÄÁ ×ÁÍ ÎÕÖÎÏ ×ÙÐÏÌÎÑÔØ ÎÅÓËÏÌØËÏ ÏÄÉÎÁËÏ×ÙÈ ÚÁÐÒÏÓÏ× (ÔÁËÉÈ ËÁË ÄÏÂÁ×ÌÅÎÉÅ ÓÐÉÓËÁ × ÂÁÚÕ) ÉÌÉ ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÓÄÅÌÁÔØ ÐÏÄÄÅÒÖËÕ ÒÁÚÎÙÈ âä, ËÏÔÏÒÙÅ ÉÍÅÀÔ ÒÁÚÎÕÀ ÒÅÁÌÉÚÁÃÉÀ SQL ÓÔÁÎÄÁÒÔÁ. </para> <para> ðÒÅÄÓÔÁ×ÉÍ, ÞÔÏ Õ ×ÁÓ Ä×Å âä, Ó ÒÁÚÎÙÍ INSERT ÓÉÎÔÁËÓÉÓÏÍ: <programlisting role="php"> <![CDATA[ db1 : INSERT INTO tbl_name ( col1, col2 ... ) VALUES ( expr1, expr2 ... ) db2 : INSERT INTO tbl_name SET col1=expr1, col2=expr2 ... ]]> </programlisting> éÓÈÏÄÑ ÉÚ ÜÔÏÇÏ ÄÌÑ ÓÏÚÄÁÎÉÑ ÕÎÉÆÉÃÉÒÏ×ÁÎÎÏÇÏ ÓËÒÉÐÔÁ ×Ù ÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÍÁÓÓÉ× Ó ÚÁÐÒÏÓÁÍÉ, ÔÁËÏÊ ËÁË: <programlisting role="php"> <![CDATA[ $statment['db1']['INSERT_PERSON'] = "INSERT INTO person ( surname, name, age ) VALUES ( ?, ?, ? )" ; $statment['db2']['INSERT_PERSON'] = "INSERT INTO person SET surname=?, name=?, age=?" ; ]]> </programlisting> </para> </refsect2> <refsect2> <title>Prepare - ðÏÄÇÏÔÏ×ËÁ</title> <para> éÓÐÏÌØÚÏ×ÁÎÉÅ ×ÏÚÍÏÖÎÏÓÔÅÊ ÐÒÉ×ÅÄÅÎÙÈ × ÏÐÉÓÁÎÉÉ <link linkend="core.db.prep_exec.purpose">ãÅÌÉ</link>, ÐÒÏÉÓÈÏÄÉÔ × Ä×Á ÜÔÁÐÁ. üÔÁÐ ÐÅÒ×ÙÊ ÚÁËÌÀÞÁÅÔØÓÑ × <emphasis> ÐÏÄÇÏÔÏ×ËÅ</emphasis> ×ÙÒÁÖÅÎÉÑ É ×ÔÏÒÏÊ - × <emphasis>×ÙÐÏÌÎÅÎÉÉ</emphasis> ÏÎÎÏÇÏ. </para> <para> æÕÎËÃÉÑ <function>Prepare</function> ÄÏÌÖÎÁ ×ÙÚÙ×ÁÔØÓÑ Ó ÏÓÎÏ×ÎÙÍ ×ÙÒÁÖÅÎÉÅÍ ÅÄÉÎÏÖÄÙ. ïÎÁ ×ÏÚ×ÒÁÝÁÅÔ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÄÌÑ ÜÔÏÇÏ ×ÙÒÁÖÅÎÉÑ. </para> <para> óÏÚÄÁÎÉÅ ÏÓÎÏ×ÎÏÇÏ ×ÙÒÁÖÅÎÉÑ ÏÞÅÎØ ÐÒÏÓÔÏ: ðÉÛÉÔÅ SQL ÚÁÐÒÏÓ ËÁË ÏÂÙÞÎÏ, Ô.Å. <programlisting> <![CDATA[ SELECT surname, name, age FROM person WHERE name = 'name_to_find' AND age < 'age_limit' ]]> </programlisting> ôÅÐÅÒØ ÐÏÓÍÏÔÒÉÔÅ, ËÁËÉÅ ÉÚ ÐÁÒÁÍÅÔÒÏ× ÄÏÌÖÎÙ ÂÙÔØ ÚÁÍÅÎÅÎÙ ÐÏËÁ ÓËÒÉÐÔ ÂÕÄÅÔ ×ÙÐÏÌÎÑÔØÓÑ. úÁÍÅÎÉÔÅ ÜÔÉ ÐÁÒÁÍÅÔÒÙ ÍÅÔËÏÊ-ÚÁÐÏÌÎÉÔÅÌÅÍ. <programlisting> <![CDATA[ SELECT surname, name, age FROM person WHERE name = ? AND age < ? ]]> </programlisting> ÷ÏÔ É ×ÓÅ! ôÅÐÅÒØ ×Ù ÉÍÅÅÔÅ ÏÓÎÏ×ÎÏÅ ×ÙÒÁÖÅÎÉÑ ÄÌÑ ÆÕÎËÃÉÉ <function>prepare</function>. </para> <para> <function>Prepare</function> ÍÏÖÅÔ ÏÔÌÁ×ÌÉ×ÁÔØ ÒÁÚÎÙÅ ÔÉÐÙ ÍÅÔÏË-ÚÁÐÏÌÎÉÔÅÌÅÊ ÉÌÉ ÓÏÐÏÓÔÁ×ÌÅÎÉÊ. <simplelist> <member> ? - (ÒÅËÏÍÅÎÄÕÅÔØÓÑ) ÄÌÑ ÓËÁÌÑÒÎÙÈ ÔÉÐÏ× ÚÎÁÞÅÎÉÊ, ÔÁËÉÈ ËÁË ÓÔÒÏËÉ ÉÌÉ ÎÏÍÅÒÁ, ÚÎÁÞÅÎÉÑ ÂÕÄÕÔ Ë×ÏÔÉÒÏ×ÁÔØÓÑ(ÏÂÒÁÍÌÑÔØÓÑ ËÁ×ÙÞËÁÍÉ) × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ âä. </member> <member> ! - ÄÌÑ ÓËÁÌÑÒÎÙÈ ÔÉÐÏ× ÚÎÁÞÅÎÉÊ, ËÏÔÏÒÙÊ ÂÕÄÕ ×ÎÏÓÉÔØÓÑ × ×ÙÒÁÖÅÎÉÅ <quote>ËÁË ÅÓÔØ</quote>. </member> <member> & - ÔÒÅÂÕÅÔ ÎÁÌÉÞÉÅ ÉÍÅÎÉ ×ÎÅÛÎÅÇÏ ÆÁÊÌÁ, ÓÏÄÅÒÖÉÍÏÅ ÜÔÏÇÏ ÆÁÊÌÁ ÂÕÄÅÔ ×ÎÏÓÉÔØÓÑ × ×ÙÒÁÖÅÎÉÅ (Ô.Å. ÄÌÑ ÓÏÈÒÁÎÅÎÉÑ ÂÉÎÁÒÎÙÈ ÄÁÎÎÙÈ ÇÒÁÆÉÞÅÓËÉÈ ÆÁÊÌÏ× × âä ÎÁÐÒÉÍÅÒ) </member> </simplelist> </para> </refsect2> <refsect2> <title>Execute/ ExecuteMultiple - ÷ÙÐÏÌÎÅÎÉÅ/íÕÌØÔÉ÷ÙÐÏÌÎÅÎÉÅ</title> <para> ðÏÓÌÅ ÐÏÄÇÏÔÏ×ËÉ ×ÙÒÁÖÅÎÉÑ, ×Ù ÍÏÖÅÔÅ ×ÙÐÏÌÎÑÔØ ÚÁÐÒÏÓ. üÔÏ ÏÚÎÁÞÁÅÔ ÐÏÄÓÔÁ×ÌÅÎÉÅ ÐÅÒÅÍÅÎÎÙÈ × ×ÙÒÁÖÅÎÉÅ. äÌÑ ÜÔÏÇÏ ÆÕÎËÃÉÉ <function>execute</function> ÎÅÏÂÈÏÄÉÍÏ Ä×Á ÁÒÇÕÍÅÎÔÁ, ÉÄÅÎÔÉÆÉËÁÔÏÒ ÏÔ ÆÕÎËÃÉÉ <function>prepare</function> É ÍÁÓÓÉ× Ó ÚÎÁÞÅÎÉÑÍÉ ÄÌÑ ÐÏÄÓÔÁÎÏ×ËÉ. íÁÓÓÉ× ÄÏÌÖÅÎ ÂÙÔØ ÎÕÍÅÒÏ×ÁÎÎÙÍ. ðÅÒ×ÙÊ ÜÌÅÍÅÎÔ ÂÕÄÅÔ ÐÏÄÓÔÁ×ÌÅÎ ×ÍÅÓÔÏ ÐÅÒ×ÏÊ ÍÅÔËÉ-ÚÁÐÏÌÎÉÔÅÌÑ, ×ÔÏÒÏÊ - ×ÍÅÓÔÏ ×ÔÏÒÏÊ, É Ô.Ä. îÕÍÅÒÁÃÉÑ ÎÅ ÚÁ×ÉÓÉÔ ÏÔ ÔÉÐÁ ÉÓÐÏÌØÚÕÅÍÙÈ ÍÅÔÏË-ÚÁÐÏÌÎÉÔÅÌÅÊ. <programlisting role="php"> <![CDATA[ <?php // ðÒÉÍÅÒ ×ÎÅÓÅÎÉÑ ÄÁÎÎÙÈ $alldata = array( array(1, 'one', 'en'), array(2, 'two', 'to'), array(3, 'three', 'tre'), array(4, 'four', 'fire')); $sth = $dbh->prepare("INSERT INTO numbers VALUES(?,?,?)"); foreach ($alldata as $row) { $dbh->execute($sth, $row); } ?> ]]> </programlisting> ÷ ÐÒÉÍÅÒÅ ÚÁÐÒÏÓ ÂÕÄÅÔ ×ÙÐÏÌÎÅÎ ÞÅÔÙÒÅ ÒÁÚÁ: <programlisting> <![CDATA[ INSERT INTO numbers VALUES( '1', 'one', 'en') INSERT INTO numbers VALUES( '2', 'two', 'to') INSERT INTO numbers VALUES( '3', 'three', 'tre') INSERT INTO numbers VALUES( '4', 'four', 'fire') ]]> </programlisting> æÕÎËÃÉÑ <function>ExecuteMultiple</function> ÒÁÂÏÔÁÅÔ ÔÏÞÎÏ ÔÁËÖÅ, ÎÏ ÐÒÉÎÉÍÁÅÔ Ä×Õ-ÍÅÒÎÙÊ ÍÁÓÓÉ× ËÁË ÐÁÒÁÍÅÔÒ. works in the same way, but requires a two dimensional array. é ÍÙ ÍÏÖÅÍ ÐÒÅÄÓÔÁ×ÉÔØ ÐÒÅÄÙÄÕÝÉÊ ÐÒÉÍÅÒ × ÄÒÕÇÏÍ ×ÉÄÅ: <programlisting role="php"> <![CDATA[ <?php // Example inserting data $alldata = array( array(1, 'one', 'en'), array(2, 'two', 'to'), array(3, 'three', 'tre'), array(4, 'four', 'fire')); $sth = $dbh->prepare("INSERT INTO numbers VALUES(?,?,?)"); $dbh->executeMultiple($sth, $alldata); } ?> ]]> </programlisting> òÅÚÕÌØÔÁÔ ÂÕÄÅÔ ÔÏÔ ÖÅ. åÓÌÉ ÏÄÎÁ ÉÚ ÚÁÐÉÓÅÊ ÂÕÄÅÔ ÎÅÕÄÁÞÎÏÊ, ÏÓÔÁÌØÎÙÅ ÚÁÐÉÓÉ ×ÙÐÏÌÎÑÔØÓÑ ÎÅ ÂÕÄÕÔ. </para> <para> åÓÌÉ ÆÕÎËÃÉÑ <function>execute*</function> ÎÅ ÕÄÁÌÁÓØ, <classname>DB_Error</classname>, Á × ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ <parameter>DB_OK</parameter> ÂÕÄÅÔ ×ÏÚ×ÒÁÝÅÎÏ. </para> </refsect2> </refsect1> </refentry> </reference> <!-- 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 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 --> Index: peardoc/ru/core/http.xml +++ peardoc/ru/core/http.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="http"> <title>HTTP ÆÕÎËÃÉÉ</title> <titleabbrev>PEAR HTTP</titleabbrev> <partintro> <simpara> </simpara> </partintro> <refentry id="core.http.http"> <refnamediv> <refname>HTTP</refname> <refpurpose>ëÌÁÓÓ HTTP ÕÔÉÌÉÔ</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>require_once "HTTP.php";</synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> HTTP ÆÕÎËÃÉÉ. </simpara> </refsect1> <refsect1 id="core.http.http.date"> <title>HTTP::date</title> <funcsynopsis> <funcprototype> <funcdef>string <function>HTTP::date</function></funcdef> <paramdef>integer <parameter>time</parameter></paramdef> </funcprototype> </funcsynopsis> <para> æÏÒÍÁÔÉÒÏ×ÁÎÉÅ RFC ÓÏ×ÍÅÓÔÉÍÏÇÏ HTTP ÚÁÇÏÌÏ×ËÁ. üÔÁ ÆÕÎËÃÉÑ ÚÁ×ÉÓÉÔ ÏÔ ÄÉÒÅËÔÉ×Ù php.ini - "y2k_compliance". </para> <para> ðÁÒÁÍÅÔÒ <parameter>time</parameter> ÄÏÌÖÅÎ ÂÙÔØ ÓÔÅÍÐÏÍ UNIX (timestamp), ËÏÔÏÒÙÊ ÂÕÄÅÔ ÐÒÅÏÂÒÁÚÏ×ÁÎ × RFC ÓÏ×ÍÅÓÔÉÍÕÀ ÄÁÔÕ, É ×ÏÚ×ÒÁÝÅÎ ÖÔÏÊ ÆÕÎËÃÉÅÊ. </para> </refsect1> <refsect1 id="core.http.http.negotiateLanguage"> <title>HTTP::negotiateLanguage</title> <funcsynopsis> <funcprototype> <funcdef>string <function>HTTP::negotiateLanguage</function></funcdef> <paramdef>array <parameter>supported</parameter></paramdef> <paramdef>string <parameter>default</parameter></paramdef> </funcprototype> </funcsynopsis> <para> ñÚÙË ÄÏÇÏ×ÏÒÅÎÎÏÓÔÉ (Negotiate language), ËÏÔÏÒÙÊ ÐÏÓÙÌÁÅÔØÓÑ ÂÒÏÕÚÅÒÏÍ ÐÏÌØÚÏ×ÁÔÅÌÑ ÞÅÒÅÚ HTTP ÚÁÇÏÌÌÏ×ÏË Accept-Language ÉÌÉ ÈÏÓÔÏÍ ÓÌÉÅÎÔÁ. æÏÒÍÁ ÄÌÑ ËÏÄÏ× ÑÚÙËÁ × ÏÓÎÏ×ÎÏÍ "ll" ÄÌÑ ÑÚÙËÁ, ÎÁ ËÏÔÏÒÏÍ ÇÏ×ÏÒÑÔ ×Ï ×ÓÅÊ ÓÔÒÁÎÅ, ÉÌÉ "ll_CC" ÄÌÑ ÑÚÙËÁ, ÎÁ ËÏÔÏÒÏÍ ÒÁÚÇÏ×ÁÒÉ×ÁÀÔ × ÏÔÄÅÌØÎÏÊ ÓÔÒÁÎÅ. îÁÐÒÉÍÅÒ, ÁÎÇÌÉÊÓËÉÊ óûá (U.S. English) - ÜÔÏ "en_US", Á ×ÏÔ âÒÉÔÁÎÓËÉÊ ÁÎÇÌÉÊÓËÉÊ (British English) - ÜÔÏ "en_UK". ðÏÒÔÕÇÁÌØÓËÉÊ × ðÏÒÔÕÇÁÌÉÉ - "pt_PT", ÎÁÐÒÏÔÉ× âÒÁÚÉÌØÓËÉÊ ÐÏÒÔÕÇÁÌØÓËÉÊ - "pt_BR". ä×Õ-ÂÕË×ÅÎÎÙÅ ËÏÄÙ ÓÔÒÁÎ ÍÏÖÎÏ ÎÁÊÔÉ × ÓÔÁÎÄÁÒÔÅ ISO 3166. </para> <para> ðÏÄÄÅÒÖÉ×ÁÅÔØÓÑ ËÏÌÉÞÅÓÔ×Ï (quantity) ÑÚÙËÏ× × Ú×ÇÏÌÏ×ËÅ Accept-Language: </para> <para> <programlisting> Accept-Language: en_UK;q=0.7, en_US;q=0.6, no;q=1.0, dk;q=0.8 </programlisting> </para> <para> ðÅÒ×ÙÊ ÐÁÒÁÍÅÔÒ <parameter>supported</parameter> - ÜÔÏ ÁÓÓÏÃÉÁÔÉ×ÎÙÊ ÍÁÓÓÉ× ÉÎÄÅËÓÉÒÏ×ÁÎÎÙÊ ËÏÄÁÍÉ ÑÚÙËÏ× (ËÏÄÁÍÉ ÓÔÒÁÎ). úÎÁÞÅÎÉÑ ÄÏÌÖÎÙ ÐÒÉÒÁ×ÎÉ×ÁÔØÓÑ Ë ÉÓÔÉÎÅ (true). </para> <para> ÷ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ <parameter>default</parameter> - ÜÔÏ ÑÚÙË ÐÏ ÕÍÏÌÞÁÎÉÀ, ËÏÔÏÒÙÊ ÄÏÌÖÅÎ ÉÓÐÏÌØÚÏ×ÁÔØÓÑ ÅÓÌÉ ÎÉÏÄÉÎ ÑÚÙË ÎÅ ×ÙÑ×ÌÅÎ ÐÏ ÄÏÇÏ×ÏÒÅÎÎÏÓÔÉ (negotiation). úÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÌÑ ÜÔÏÇÏ ÐÁÒÁÍÅÔÒÁ - ÜÔÏ "en_US" ÄÌÑ U.S. English. </para> </refsect1> </refentry> <refentry id="core.http.compress"> <refnamediv> <refname>Compress</refname> <refpurpose>HTTP ËÏÍÐÒÅÓÓÉÑ</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis> require_once "HTTP/Compress.php"; HTTP_Compress::start(); /** úÄÅÓØ ×Ù ÇÅÎÅÒÉÒÕÅÔÅ ×Ù×ÏÄ ÓÔÒÁÎÉÃÙ */ HTTP_Compress::output(); </synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara></simpara> </refsect1> <refsect1 id="core.http.compress.start"> <title>HTTP_Compress::start</title> <funcsynopsis> <funcprototype> <funcdef>void <function>HTTP_Compress::start</function></funcdef> <paramdef></paramdef> </funcprototype> </funcsynopsis> <para> óÔÁÒÔÕÅÔ ÂÕÆÅÒ ×Ù×ÏÄÁ, É ÏÂÅÓÐÅÞÉ×ÁÅÔ ÞÔÏ, ×Ù×ÏÄ ÎÁ ÅËÒÁÎ (ÏËÎÏ ÂÒÏÕÚÅÒÁ) ÐÒÏÉÚ×ÏÄÉÔØÓÑ ÎÅ ÂÕÄÅÔ, Á ÂÕÄÅÔ ÂÕÆÅÒÉÚÉÒÏ×ÁÔØÓÑ. </para> </refsect1> <refsect1 id="core.http.compress.output"> <title>HTTP_Compress::output</title> <funcsynopsis> <funcprototype> <funcdef>void <function>HTTP_Compress::output</function></funcdef> <paramdef>boolean <parameter><optional>compress</optional></parameter></paramdef> <paramdef>boolean <parameter><optional>use_etag</optional></parameter></paramdef> <paramdef>boolean <parameter><optional>send_body</optional></parameter></paramdef> </funcprototype> </funcsynopsis> <para> ÷Ù×ÏÄ ÓÏÄÅÒÖÉÍÏÇÏ ÂÕÆÅÒÁ ×Ù×ÏÄÁ, ËÏÍÐÒÅÓÓÉÒÏ×ÁÎÎÏÇÏ ÐÏ ÖÅÌÁÎÉÀ, ÓÏ ×ÓÅÍÉ ÚÁÇÏÌÏ×ËÁÍÉ. </para> <para> ðÅÒ×ÙÊ ÐÁÒÁÍÅÔÒ <parameter>compress</parameter> ÏÐÒÅÄÅÌÑÅÔ, ÎÕÖÎÏ ÌÉ ÉÓÐÏÌØÚÏ×ÁÔØ gzip ËÏÍÐÒÅÓÓÉÀ. (ðÒÉÍÅÞ.: âÒÏÕÚÅÒ ÐÏÌØÚÏ×ÁÔÅÌÑ ÔÁËÖÅ ÄÏÌÖÅÔ ÐÏÄÄÅÒÖÉ×ÁÔØ gzip). ÷ÔÏÒÏÊ ÐÁÒÁÍÅÔÒ <parameter>use_etag</parameter> ÏÐÒÅÄÅÌÑÅÔ ÎÕÖÎÏ ÌÉ ÇÅÎÅÒÉÒÏ×ÁÔØ ETag, É ÎÅ ÐÏÓÙÌÁÔØ ÔÅÌÏ ÓÏÄÅÒÖÁÎÉÑ ÅÓÌÉ ÂÒÏÕÚÅÒ ÉÍÅÅÔ ÜÔÏÔ ÏÂØÅËÔ ÕÖÅ ËÅÛÉÒÏ×ÁÎÎÙÍ. <parameter>send_body</parameter> ÏÐÒÅÄÅÌÑÅÔ, ÐÏÓÙÌÁÔØ ÌÉ ÔÅÌÏ ÚÁÐÒÏÓÁ? (äÏÌÖÎÏ ÂÙÔØ false ÄÌÑ HEAD ÚÁÐÒÏÓÁ.) </para> </refsect1> </refentry> </reference> <!-- 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 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 --> Index: peardoc/ru/core/pear.xml +++ peardoc/ru/core/pear.xml <?xml encoding="KOI8-R"?> <!-- $Revision: 1.1 $ --> <reference id="reference"> <title>PEAR ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ. É ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË</title> <titleabbrev>PEAR</titleabbrev> <partintro> <simpara> üÔÏÔ ÒÁÚÄÅÌ ×ËÌÀÞÁÅÔ × ÓÅÂÑ ÄÏËÕÍÅÎÔÁÃÉÀ ÄÌÑ ÏÓÎÏ×ÎÏÇÏ ËÌÁÓÓÁ PEAR É ÄÌÑ PEAR ËÌÁÓÓÁ, ËÏÔÏÒÙÊ ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÍÅÈÁÎÉÚÍ ÄÌÑ "ÏÔÌÏ×Á" ÏÛÉÂÏË. ðÏÄÒÁÚÕÍÅ×ÁÅÔØÓÑ, ÞÔÏ ×Ù ÕÖÅ ÏÓ×ÅÄÏÍÌÅÎÙ Ï ÏÂßÅËÔÁÈ É ËÌÁÓÓÁÈ × PHP. </simpara> </partintro> <refentry id="class.pear"> <refnamediv> <refname>PEAR</refname> <refpurpose>PEAR ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ (ÄÅÓÔÒÕËÔÏÒÙ, ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË)</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>require_once "PEAR.php";</synopsis> <synopsis>class <replaceable>classname</replaceable> extends <classname>PEAR</classname> { ... }</synopsis> </refsynopsisdiv> <refsect1> <title>ïÐÉÓÁÎÉÅ</title> <simpara> ïÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÏÐÒÅÄÅÌÑÅÔ ÓÔÁÎÄÁÒÔ, ËÏÔÏÒÙÊ ÉÓÐÏÌØÚÕÅÔØÓÑ × ÂÏÌØÛÉÎÓÔ×Å PEAR-ËÌÁÓÓÏ×. ðÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÏÓÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÎÅ ÉÓÐÏÌØÚÕÅÔØÓÑ ÓÁÍ ÐÏ ÓÅÂÅ, ÅÇÏ ÉÓÐÏÌØÚÕÀÔ ÄÌÑ ÎÁÐÉÓÁÎÉÑ ÐÏÄËÌÁÓÓÏ×. </simpara> <para> ëÌÀÞÅ×ÙÅ ×ÏÚÍÏÖÎÏÓÔÉ: <itemizedlist> <listitem> <simpara>ÕÎÉÞÔÏÖÅÎÉÅ ÏÂØÅËÔÏ× - "ÄÅÓÔÒÕËÔÏÒÙ"</simpara> </listitem> <listitem> <simpara>ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË</simpara> </listitem> </itemizedlist> </para> </refsect1> <refsect1 id="destructors"> <title>PEAR "ÄÅÓÔÒÕËÔÏÒÙ"</title> <simpara> åÓÌÉ ×Ù ÎÁÓÌÅÄÕÅÔÅ <classname>PEAR</classname> × ËÌÁÓÓÅ ÐÏÄ ÎÁÚ×ÁÎÉÅÍ <replaceable>ClassName</replaceable>, ×Ù ÍÏÖÎÔÅ ÏÐÒÅÄÅÌÉÔØ ÍÅÔÏÄ ÐÏÄ ÎÁÚ×ÁÎÉÅÍ _<replaceable>className</replaceable> (ÎÁÚ×ÁÎÉÅ ËÌÁÓÓÁ Ó ÐÏÄÞÅÒËÉ×ÁÎÉÅÍ ×ÎÁÞÁÌÅ) ËÏÔÏÒÙÊ ÂÕÄÅÔ ÓÕÝÅÓÔ×Ï×ÁÔØ ÐÒÉ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ËÌÁÓÓÁ. óÔÒÏÇÏ - ÜÔÏ ÎÅ ÅÓÔØ ÄÅÓÔÒÕËÔÏÒ, ÐÒÉ ËÏÔÏÒÏÍ ×Ù ÍÏÖÅÔÅ "ÕÄÁÌÉÔØ" ÏÂØÅËÔ (delete object) É ×ÙÚ×ÁÔØ ÄÅÓÔÒÕËÔÏÒ, ÎÏ × ÜÔÏÍ ÓÍÙÓÌÅ PHP ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÆÕÎËÃÉÊ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback functions). óÍ. <link linkend="example.destructors">ÐÒÉÍÅÒ</link>. </simpara> <para> <warning id="destructors.warning"> <title>÷ÁÖÎÏ!</title> <para> þÔÏÂÙ ÄÅÓÔÒÕËÔÏÒÙ ÒÁÂÏÔÁÌÉ ÐÒÁ×ÉÌØÎÏ, ×Ù ÄÏÌÖÎÙ ÏÐÒÅÄÅÌÑÔØ ÜËÚÅÍÐÌÑÒ ËÌÁÓÓÁ Ó "=& new" ÏÐÅÒÁÔÏÒÏÍ (ÐÏ ÓÓÙÌËÅ) ËÁË ÎÁÐÒÉÍÅÒ: <programlisting role="php"> $obj =& new MyClass(); </programlisting> </para> <simpara> åÓÌÉ ÉÓÐÏÌØÚÏ×ÁÔØ ËÏÎÓÔÒÕËÃÉÀ "= new", ÔÏ ÏÂßÅËÔ × ÓÐÉÓËÅ PEAR ÂÕÄÅÔ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎ ËÁË <literal>ËÏÐÉÑ</literal>. óÏÏÔ×ÅÔÓÔ×ÅÎÎÏ ÓËÏÐÉÒÕÀÔØÓÑ ËÏÎÓÔÒÕËÔÏÒ É ÄÅÓÔÒÕËÔÏÒ. </simpara> </warning> </para> </refsect1> <refsect1 id="error-handling"> <title>PEAR ÏÂÒÁÂÏÔËÁ ÏÛÉÂÏË</title> <simpara> ïÓÎÏ×ÎÏÊ ËÌÁÓÓ PEAR ÔÁËÖÅ ÐÒÅÄÌÁÇÁÅÔ ÒÅÛÅÎÉÅ ÄÌÑ ÏÔÌÁ×ÌÉ×ÁÎÉÑ ÍÎÏÇÉÈ ËÏÍÐÌÅËÓÎÙÈ ÏÛÉÂÏË ËÏÔÏÒÙÅ ÉÍÅÀÔ ÚÎÁÞÅÎÉÑ true/false, ÉÌÉ ÞÉÓÌÏ×ÙÅ ËÏÄÙ. PEAR Error - ÜÔÏ ÏÂØÅËÔ ×ÏÚ×ÒÁÝÁÅÍÙÊ ËÌÁÓÓÏÍ <classname>PEAR_Error</classname>, ÉÌÉ ËÌÁÓÓÏÍ ÒÁÓÛÉÒÑÀÝÉÍ <classname>PEAR_Error</classname>. </simpara> <simpara> ïÄÎÉÍ ÉÚ ËÒÉÔÅÒÉÅ× ÒÁÚÒÁÂÏÔËÉ ÆÏÒÍÁÔÁ ÏÛÉÂÏË PEAR, Ñ×ÌÑÅÔÓÑ ÔÏ, ÞÔÏ ÏÛÉÂËÉ ÎÅ ÄÏÌÖÎÙ ÄÅÌÁÔØ ×Ù×ÏÄÁ ÎÁ ÅËÒÁÎ ÐÏÌØÚÏ×ÁÔÅÌÀ, ÏÎÉ ÄÏÌÖÎÙ ÏÂÒÁÂÁÔÙ×ÁÔØÓÑ ÂÅÚ ËÁËÏÇÏ-ÌÉÂÏ ×Ù×ÏÄÁ ÎÁ ÜËÒÁÎ, ÅÓÌÉ ÜÔÏ ÎÅÏÂÈÏÄÉÍÏ. üÔÏ ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÏÂÒÁÂÁÔÙ×ÁÔØ ÏÛÉÂËÉ ÂÏÌÅÅ ÐÒÉ×ÌÅËÁÔÅÌØÎÏ, ÔÁË ÖÅ ÎÁÐÒÉÍÅÒ, ÅÓÌÉ ×ÁÛ ×ÙÈÏÄÎÏÊ ÆÏÒÍÁÔ ÏÔÌÉÞÅÎ ÏÔ HTML ( ÎÁÐÒÉÍÅÒ WML ÉÌÉ ÄÒÕÇÏÊ XML ÆÏÒÍÁÔ). </simpara> <simpara> ïÂØÅËÔÙ ÏÛÉÂÏË ÍÏÇÕÔ ÂÙÔØ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÎÙ ÄÌÑ ×ÙÐÏÌÎÅÎÉÑ ÏÐÒÅÄÅÌÅÎÎÙÈ ÄÅÊÓÔ×ÉÊ ÐÏÓÌÅ ÔÏÇÏ, ËÁË ÏÎÉ (ÏÂØÅËÔÙ) ÂÙÌÉ ÓÏÚÄÁÎÙ. îÁÐÒÉÍÅÒ: ×Ù×ÅÄÅÎÉÅ ÎÁ ÅËÒÁÎ ÓÏÏÂÝÅÎÉÑ Ï ÏÛÉÂËÅ, ÐÅÞÁÔØ ÓÏÏÂÝÅÎÉÑ É ×ÙÈÏÄ ÉÚ ÐÒÏÇÒÁÍÍÙ, ÏÔÌÏ× ÏÛÉÂÏË Ó ÐÏÍÏÝØÀ PHP ÆÕÎËÃÉÉ <function>trigger_error</function>, ÉÌÉ ×ÙÚÏ× ÆÕÎËÃÉÉ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback). üÔÏ ÏÐÒÅÄÅÌÅÎÏ × <classname>PEAR_Error</classname> ËÏÎÓÔÒÕËÔÏÒÅ, ÎÏ ×ÓÅ ÐÁÒÁÍÅÔÒÙ ÎÅÏÂÑÚÁÔÅÌØÎÙ, É ×Ù ÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÕÍÏÌÞÁÎÉÑ ÄÌÑ ÏÛÉÂÏË, ×ÏÚ×ÒÁÝÁÅÍÙÈ ÌÀÂÙÍ ÏÂØÅËÔÏÍ, ÂÁÚÉÒÕÀÝÅÍÓÑ ÎÁ ÎÁ <classname>PEAR</classname> ËÌÁÓÓÅ. óÍ. ÐÒÉÍÅÒ <link linkend="example.error1">PEAR error examples</link>, ÐÏËÁÚÙ×ÁÀÝÉÊ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÜÔÏÔ ËÌÁÓÓ, É ÏÐÉÓÁÎÉÅ <classname>PEAR_Error</classname> ÄÌÑ ÂÏÌÅÅ ÄÅÔÁÌØÎÏÇÏ ÉÚÕÞÅÎÉÑ. </simpara> </refsect1> <refsect1> <title>ðÒÉÍÅÒÙ</title> <para> üÔÏÔ ÐÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÜÍÕÌÑÃÉÀ ÄÅÓÔÒÕËÔÏÒÏ× × ËÌÁÓÓÁÈ, ÐÒÏÉÚ×ÏÄÎÙÈ ÏÔ PEAR. ðÒÏÓÔÏÊ ËÌÁÓÓ, ËÏÔÏÒÙÊ ÂÅÒÅÔ ÓÏÄÅÒÖÉÍÏÅ ÆÁÊÌÁ, ÄÁÅÔ ×ÏÚÍÏÖÎÏÓÔØ ÄÏÂÁ×ÉÔØ ×ÏÄÅÒÖÉÍÏÅ, É ÓÏÈÒÁÎÑÅÔ ÄÁÎÎÙÅ ÎÁÚÁÄ × ÆÁÊÌ × ËÏÎÃÅ ÚÁÐÒÏÓÁ: <example id="example.destructors"> <title>PEAR: ÜÍÕÌÉÒÏ×ÁÎÎÙÅ ÄÅÓÔÒÕËÔÏÒÙ</title> <programlisting role="php"> require_once "PEAR.php"; class FileContainer extends PEAR { var $file = ''; var $contents = ''; var $modified = 0; function FileContainer($file) { $this->PEAR(); // ÜÔÁ ÓÔÒÏËÁ ×ÙÚÙ×ÁÅÔ ËÏÎÓÔÒÕËÔÏÒ ÒÏÄÉÔÅÌÑ $fp = fopen($file, "r"); if (!is_resource($fp)) { return; } while (!empty($data = fread($fp, 2048))) { $this->contents .= $data; } fclose($fp); } function append($str) { $this->contents .= $str; $this->modified++; } // "ÄÅÓÔÒÕËÔÏÒ" ÎÁÚ×ÁÎ ÔÁË ÖÅ, ËÁË É ËÏÎÓÔÒÕËÔÏÒ // ÎÏ Ó ÐÏÄÞÅÒËÉ×ÁÎÉÅÍ × ÎÁÞÁÌÅ ÎÁÚ×ÁÎÉÑ function _FileContainer() { if ($this->modified) { $fp = fopen($this->file, "w"); if (!is_resource($fp)) { return; } fwrite($fp, $this->contents); fclose($fp); } } } $fileobj =& new FileContainer("testfile"); $fileobj->append("this ends up at the end of the file\n"); // ëÏÇÄÁ ÚÁÐÒÏÓ ×ÙÐÏÌÎÅÎ É PHP ÚÁ×ÅÛÉÔ ÒÁÂÏÔÕ, "ÄÅÓÔÒÕËÔÏÒ" // $fileobj ÂÕÄÅÔ ×ÙÚ×ÁÎ É ÏÂÎÏ×ÉÔ ÆÁÊÌ ÎÁ ÄÉÓËÅ. </programlisting> </example> <note> <simpara> PEAR "ÄÅÓÔÒÕËÔÏÒÙ" ÉÓÐÏÌØÚÕÀÔ ÆÕÎËÃÉÀ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á PHP (<function>register_shutdown_function</function>), É ÐÏÜÔÏÍÕ ×Ù ÎÅ ÍÏÖÅÔÅ ÞÔÏ-ÌÉÂÏ ×Ù×ÏÄÉÔØ ÞÅÒÅÚ ÎÉÈ, ËÏÇÄÁ ðèð ÚÁÐÕÝÅÎ ÞÅÒÅÚ ×ÅÂ-ÂÒÏÕÚÅÒ. ìÀÂÏÊ ×Ù×ÏÄ × "ÄÅÓÔÒÕËÔÏÒÅ" ÂÕÄÅÔ ÐÏÔÅÒÑÎ, × ÏÔÌÉÞÉÅ ÏÔ ÓÉÔÕÁÃÉÉ, ËÏÇÄÁ PHP ÚÁÐÕÓËÁÅÔØÓÑ Ó ËÏÍÍÁÎÄÎÏÊ ÓÔÒÏËÉ. ÷ PHP ×ÅÒÓÉÉ 4.1 É ×ÙÛÅ ×Ù×ÏÄ ÎÁ ÜËÒÁÎ ÔÁË ÖÅ ÍÏÖÅÔ ÂÙÔØ ÇÅÎÅÒÉÒÏ×ÁÎ × ÄÅÓÔÒÕËÔÏÒÅ. </simpara> <simpara> ôÁË ÖÅ ÓÍÏÔÒÉÔÅ ÐÒÉÍÅÒ <link linkend="destructors.warning">ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ</link> Ï ÔÏÍ, ËÁË ÐÒÁ×ÉÌØÎÏ ÎÁÓÌÅÄÏ×ÁÔØ ÏÂßÅËÔÙ, ÅÓÌÉ ×Ù ÈÏÔÉÔÅ ÉÓÐÏÌØÚÏ×ÁÔØ ÄÅÓÔÒÕËÔÏÒ. </simpara> </note> </para> <simpara> óÌÅÄÕÀÝÉÊ ÐÒÉÍÅÒ ÉÌÌÀÓÔÒÉÒÕÅÔ ÒÁÚÎÙÅ ÐÕÔÉ ÉÓÐÏÌØÚÏ×ÁÎÉÑ ÍÅÈÁÎÉÚÍÁ ÏÔÌÏ×Á ÏÛÉÂÏË PEAR. </simpara> <para> <example id="example.error1"> <title>PEAR error example (1)</title> <programlisting role="php"> function mysockopen($host = "localhost", $port = 8090) { $fp = fsockopen($host, $port, $errno, $errstr); if (!is_resource($fp)) { return new PEAR_Error($errstr, $errno); } return $fp; } $sock = mysockopen(); if (PEAR::isError($sock)) { print "mysockopen error: ".$sock->getMessage()."<BR>\n" } </programlisting> </example> </para> <simpara> üÔÏ ÐÒÉÍÅÒ ÐÏËÁÚÙ×ÁÅÔ ÏÂÒÁÂÏÔÞÉË ÄÌÑ Æ-ÃÉÉ <function>fsockopen</function>, ËÏÔÏÒÙÊ ×ÏÚ×ÒÁÝÁÅÔ ËÏÄ ÏÝÉÂËÉ É ÓÏÏÂÝÅÎÉÅ, ËÏÔÏÒÏÅ ×ÏÚ×ÒÁÔÉÌ fsockopen × ÏÂØÅËÔ ÏÛÉÂËÉ PEAR. <function>PEAR::isError</function> ÉÓÐÏÌØÚÕÅÔØÓÑ ÄÌÑ ÏÐÒÅÄÅÌÅÎÉÑ, Ñ×ÌÑÅÔØÓÑ ÌÉ ÄÁÎÎÏÅ ÚÎÁÞÅÎÉÅ ÏÛÉÂËÏÊ PEAR. </simpara> <simpara> òÅÖÉÍÙ PEAR_Error × ÜÔÏÍ ÐÒÉÍÅÒÅ ÐÒÏÓÔÏ ×ÏÚ×ÒÁÝÁÅÔ ÏÂØÅËÔ ÏÛÉÂËÉ, Á ×ÓÅ ÏÓÔÁÌØÎÏÅ ÏÓÔÁ×ÌÑÅÔ ÎÁ ÕÓÍÏÔÒÅÎÉÅ ÐÏÌØÚÏ×ÁÔÅÌÑ (ÐÒÏÇÒÁÍÍÉÓÔÁ). üÔÏ ÒÅÖÉÍ ÐÏ ÕÍÏÌÞÁÎÉÀ. </simpara> <simpara> ÷ ÓÌÅÄÕÀÝÅÍ ÐÒÉÍÅÒÅ ÍÙ ÐÏËÁÖÅÍ, ËÁË ÉÓÐÏÌØÚÏ×ÁÔØ ÒÅÖÉÍ ÒÁÂÏÔÙ ÏÛÉÂÏË ÐÏ ÕÍÏÌÞÁÎÉÀ. </simpara> <para> <example id="example.error2"> <title>PEAR error example (2)</title> <programlisting role="php"> class TCP_Socket extends PEAR { var $sock; function TCP_Socket() { $this->PEAR(); } function connect($host, $port) { $sock = fsockopen($host, $port, $errno, $errstr); if (!is_resource($sock)) { return $this->raiseError($errstr, $errno); } } } $sock = new TCP_Socket; $sock->setErrorHandling(PEAR_ERROR_DIE); $sock->connect("localhost", 8090); print "still alive<BR>\n"; </programlisting> </example> </para> <simpara> úÄÅÓØ ÍÙ ÕÓÔÁÎÏ×ÉÌÉ ÒÅÖÉÍ ÒÁÂÏÔÙ ÏÛÉÂÏË ÐÏ ÕÍÏÌÞÁÎÉÀ <constant>PEAR_ERROR_DIE</constant>, É ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÌÉ ÎÉËÏËÏÇÏ ÒÅÖÉÍÁ × ×ÙÚÏ×Å raiseError (ÜÔÏ ÔÒÅÔÉÊ ÐÁÒÁÍÅÔÒ), raiseError ÉÓÐÏÌØÚÕÅÔ ÒÅÖÉÍ, ÚÁÄÁÎÎÙÊ ÐÏ ÕÍÏÌÞÁÎÉÀ É ÚÁ×ÅÒÛÁÅÔ ÒÁÂÏÔÕ ÐÒÉÌÏÖÅÎÉÑ ÅÓÌÉ fsockopen ÎÅ ÕÄÁÌÓÑ. </simpara> </refsect1> <refsect1> <title>éÓÐÏÌØÚÏ×ÁÎÉÅ ÇÌÏÂÁÌØÎÙÈ ÐÅÒÅÍÅÎÎÙÈ</title> <para> ëÌÁÓÓ PEAR ÉÓÐÏÌØÚÕÅÔ ÎÅËÏÔÏÒÙÅ ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ ÄÌÑ ÒÅÇÉÓÔÒÁÃÉÉ ÇÌÏÂÁÌØÎÙÈ ÕÍÏÌÞÁÎÉÊ, É ÔÁË ÖÅ ÓÐÉÓÏË ÏÂØÅËÔÏ×, ÉÓÐÏÌØÚÕÀÝÉÈÓÑ × ÄÅÓÔÒÕËÔÏÒÅ. ÷ÓÅ ÇÌÏÂÁÌØÎÙÅ ÐÅÒÅÍÅÎÎÙÅ, ËÏÔÏÒÙÅ ÁÓÓÏÃÉÉÒÕÀÔØÓÑ Ó ËÌÁÓÓÏÍ PEAR, ÉÍÅÀÔ <literal>_PEAR_</literal> ÐÒÅÆÉËÓ × ÉÍÅÎÉ. </para> <para> <variablelist> <varlistentry> <term>$_PEAR_default_error_mode</term> <listitem> <simpara> åÓÌÉ ÎÉËÁËÏÇÏ ÒÅÖÉÍÁ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË ÎÅ ÎÁÚÎÁÞÅÎÏ, ÔÏ ÂÕÄÅÔ ÉÓÐÏÌØÚÏ×ÁÎ ÄÁÎÎÙÊ ÒÅÖÉÍ. òÅÖÉÍÙ ÍÏÇÕÔ ÂÙÔØ: <constant>PEAR_ERROR_RETURN</constant>, <constant>PEAR_ERROR_PRINT</constant>, <constant>PEAR_ERROR_TRIGGER</constant>, <constant>PEAR_ERROR_DIE</constant> or <constant>PEAR_ERROR_CALLBACK</constant>. </simpara> <para> îÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÉ ÐÅÒÅÍÅÎÎÙÅ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_DIE); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_options</term> <listitem> <simpara> åÓÌÉ ÒÅÖÉÍ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË <constant>PEAR_ERROR_TRIGGER</constant>, ÜÔÏ ÚÎÁÞÉÔ, ÞÔÏ ÕÒÏ×ÅÎØ ÏÛÉÂÏË ( ÏÄÉÎ ÉÚ <constant>E_USER_NOTICE</constant>, <constant>E_USER_WARNING</constant> ÉÌÉ <constant>E_USER_ERROR</constant>). </simpara> <para> îÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÕ ÐÅÒÅÍÅÎÎÕÀ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_ERROR); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_callback</term> <listitem> <simpara> åÓÌÉ ÎÉÏÄÉÎ ÉÚ<replaceable>ÎÅÏÂÑÚÁÔÅÌØÎÙÈ</replaceable> ÐÁÒÁÍÅÔÒÏ× ÎÅ ÉÓÐÏÌØÚÏ×ÁÎ, ÐÒÉ ÏÛÉÂËÅ ÉÌÉ ÉÓÐÏÌØÚÏ×ÁÎ ÒÅÖÉÍ <constant>PEAR_ERROR_CALLBACK</constant>, ÚÎÁÞÅÎÉÅ ÜÔÏÊ ÐÅÒÅÍÅÎÎÏÊ ÉÓÐÏÌØÚÕÅÔØÓÑ ÄÌÑ ÏÂÒÁÔÎÏÇÏ ×ÙÚÏ×Á (callback). üÔÏ ÏÚÎÁÞÁÅÔ, ÞÔÏ ×Ù ÍÏÖÅÔÅ ×ÒÅÍÅÎÎÏ ÐÅÒÅËÌÀÞÁÔØÓÑ ÍÅÖÄÕ ÒÅÖÉÍÁÍÉ É ×ÏÚ×ÒÁÝÁÔØÓÑ Ë callback-ÒÅÖÉÍÕ ,ÂÅÚ ÕËÁÚÁÎÉÑ callback-ÆÕÎËÃÉÉ ÓÎÏ×Á. óÔÒÏËÏ×ÁÑ ÐÅÒÅÍÅÎÎÁÑ ÐÒÅÄÓÔÁ×ÌÑÅÔ ÆÕÎËÃÉÀ, Ä×Õ-ÜÌÅÍÅÎÔÎÙÊ ÍÁÓÓÉ× Ó ÏÂßÅËÔÏÍ × ÎÕÌÅ×ÏÍ ÉÎÄÅËÓÅ, É ÍÅÔÏÄÏÍ ÏÂØÅËÔÁ × ÐÅÒ×ÏÍ ÉÎÄÅËÓÅ (ÍÁÓÓÉ× ÉÓÐÏÌØÚÕÅÔØÓÑ, ÅÓÌÉ ×Ù ÎÁÚÎÁÞÁÅÔÅ callback-ÏÂØÅËÔ). </simpara> <para> é ÓÎÏ×Á, ÎÅ ÕÓÔÁÎÁ×ÌÉ×ÁÊÔÅ ÜÔÉ ÐÅÒÅÍÅÎÎÙÅ ÎÁÐÒÑÍÕÀ, ÉÓÐÏÌØÚÕÊÔÅ ×ÙÚÏ× <function>PEAR::setErrorHandling</function> ËÁË ÓÔÁÔÉÞÅÓËÉÊ ÍÅÔÏÄ: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "my_error_handler"); </programlisting> </informalexample> </para> <para> ÷ÏÔ ÐÒÉÍÅÒ ÔÏÇÏ, ËÁË ×Ù ÍÏÖÅÔÅ ÐÅÒÅËÌÀÞÁÔØÓÑ ÍÅÖÄÕ ÒÅÖÉÍÁÍÉ ÂÅÚ ÕËÁÚÁÎÉÑ callback-ÆÕÎËÃÉÉ ÓÎÏ×Á: <informalexample> <programlisting role="php"> PEAR::setErrorMode(PEAR_ERROR_CALLBACK, "my_function_handler"); do_some_stuff(); PEAR::setErrorMode(PEAR_ERROR_DIE); do_some_critical_stuff(); PEAR::setErrorMode(PEAR_ERROR_CALLBACK); // ÔÅÐÅÒØ ÓÎÏ×Á ÉÓÐÏÌØÚÕÅÔØÓÑ my_function_handler ËÁË ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË. </programlisting> </informalexample> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1> <title>íÅÔÏÄÙ</title> <refsect2 id="function.pear"> <title>PEAR::PEAR</title> <funcsynopsis> <funcprototype> <funcdef>PEAR()</funcdef> <void/> </funcprototype> </funcsynopsis> <para> üÔÏ ËÏÎÓÔÒÕËÔÏÒ ËÌÁÓÓÁ PEAR. ÷ÙÚÙ×ÁÊÔÅ ÅÇÏ ÉÚ ËÏÎÓÔÒÕËÔÏÒÁ ËÁÖÄÏÇÏ ËÌÁÓÓÁ, ËÏÔÏÒÙÊ ×Ù ÎÁÓÌÅÄÕÅÔÅ ÏÔ ËÌÁÓÓÁ PEAR. <example> <title>ðÒÉÍÅÒ ËÏÎÓÔÒÕËÔÏÒÁ ËÌÁÓÓÁ PEAR</title> <programlisting role="php"> class MyClass extends PEAR { var $foo, $bar; function MyClass($foo, $bar) { $this->PEAR(); $this->foo = $foo; $this->bar = $bar; } } </programlisting> </example> </para> </refsect2> <refsect2 id="function.-pear"> <title>PEAR::_PEAR</title> <funcsynopsis> <funcprototype> <funcdef>_PEAR()</funcdef> <void/> </funcprototype> </funcsynopsis> <para> üÔÏ ÄÅÓÔÒÕËÔÏÒ ËÌÁÓÓÁ PEAR. ïÎ ×ÙÚÙ×ÁÅÔØÓÑ ÐÏ ÚÁ×ÅÒÛÅÎÉÀ ÒÁÂÏÔÙ ÏÂßÅËÔÁ. </para> </refsect2> </refsect1> </refentry> <refentry id="class.pear-error"> <refnamediv> <refname>PEAR_Error</refname> <refpurpose>íÅÈÁÎÉÚÍ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË PEAR</refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>$err = new <classname>PEAR_Error</classname>($msg);</synopsis> </refsynopsisdiv> <refsect1> <title>òÅÖÉÍÙ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË</title> <para> ïÂßÅËÔ ÏÛÉÂËÉ ÉÍÅÅÔ ÒÅÖÉÍ ÏÐÅÒÁÃÉÉ (ÏÂÒÁÂÏÔËÉ), ËÏÔÏÒÁÑ ÍÏÖÅÔ ÂÙÔØ ÏÄÎÏÊ ÉÚ ÓÌÅÄÕÀÝÉÈ ËÏÎÓÔÁÎÔ: <variablelist id="error-modes"> <varlistentry id="constant.pear-error-return"> <term>PEAR_ERROR_RETURN</term> <listitem> <simpara> ðÒÏÓÔÏ ×ÏÚ×ÒÁÝÁÅÔ ïÂßÅËÔ ÏÛÉÂËÉ, ÎÅ ÄÅÌÁÑ ÎÉÞÅÇÏ ÏÓÏÂÅÎÎÏÇÏ × ËÏÎÓÔÒÕËÔÏÒÅ PEAR_Error. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-print"> <term>PEAR_ERROR_PRINT</term> <listitem> <simpara> ðÅÞÁÔÁÅÔ ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ × ËÏÎÓÔÒÕËÔÏÒÅ. ÷ÙÐÏÌÎÅÎÉÅ ÎÅ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-trigger"> <term>PEAR_ERROR_TRIGGER</term> <listitem> <simpara> éÓÐÏÌØÚÕÅÔ ÆÕÎËÃÉÀ <function>trigger_error</function> ÄÌÑ ÏÂÒÁÂÏÔËÉ ×ÎÕÔÒÅÎÎÉÈ ÏÛÉÂÏË × PHP. ÷ÙÐÏÌÎÅÎÉÅ ÐÒÅÒÙ×ÁÅÔØÓÑ ÅÓÌÉ ×Ù ÏÐÒÅÄÅÌÉÔÅ Ó×ÏÊ ÓÏÂÓÔ×ÅÎÎÙÊ ÏÂÒÁÂÏÔÞÉË ÏÛÉÂÏË PHP ÉÌÉ ÕÓÔÁÎÏ×ÉÔÅ ÓÔÒÏÇÏÓÔØ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË × E_USER_ERROR. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-die"> <term>PEAR_ERROR_DIE</term> <listitem> <simpara> Gtxfnftn ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËt É ×ÙÈÏÄÉÔ ÉÚ ÐÒÏÇÒÁÍÍÙ. ÷ÙÐÏÌÎÅÎÉÅ ÅÓÔÅÓÔ×ÅÎÎÏ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> <varlistentry id="constant.pear-error-callback"> <term>PEAR_ERROR_CALLBACK</term> <listitem> <simpara> éÓÐÏÌØÚÕÅÔ callback-ÆÕÎËÃÉÀ ÉÌÉ ÍÅÔÏÄ ÄÌÑ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË. ÷ÙÐÏÌÎÅÎÉÅ ÐÒÅÒÙ×ÁÅÔØÓÑ. </simpara> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1> <title>ó×ÏÊÓÔ×Á</title> <simpara></simpara> </refsect1> <refsect1> <title>íÅÔÏÄÙ</title> <funcsynopsis> <funcprototype> <funcdef><function>PEAR_Error::PEAR_Error</function></funcdef> <paramdef> <parameter><optional>message</optional></parameter> <parameter><optional>code</optional></parameter> <parameter><optional>mode</optional></parameter> <parameter><optional>options</optional></parameter> <parameter><optional>userinfo</optional></parameter> </paramdef> </funcprototype> </funcsynopsis> <refsect2> <title>ïÐÉÓÁÎÉÅ</title> <para> ëÏÎÓÔÒÕËÔÏÒ PEAR_Error. ðÁÒÁÍÅÔÒÙ: <variablelist> <varlistentry> <term>message</term> <listitem> <simpara> ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ, ÐÏ ÕÍÏÌÞÁÎÉÀ "unknown error". </simpara> </listitem> </varlistentry> <varlistentry> <term>code</term> <listitem> <simpara> ËÏÄ ÏÛÉÂËÉ (ÎÅ ÏÂÑÚÁÔÅÌØÎÙÊ) </simpara> </listitem> </varlistentry> <varlistentry> <term>mode</term> <listitem> <simpara> òÅÖÉÍ ÏÂÒÁÂÏÔËÉ. óÍ. ÒÁÚÄÅÌ <link linkend="error-modes">òÅÖÉÍÙ ÏÂÒÁÂÏÔËÉ ÏÛÉÂÏË</link> ÄÌÑ ÄÅÔÁÌÅÊ. </simpara> </listitem> </varlistentry> <varlistentry> <term>options</term> <listitem> <simpara> åÓÌÉ òÅÖÉÍ ÏÂÒÁÂÏÔËÉ ÍÏÖÅÔ ÉÍÅÔØ ×ÈÏÄÑÝÉÅ ÏÐÃÉÉ, ÉÓÐÏÌØÚÕÊÔÅ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÄÌÑ ÎÉÈ. îÁ ÄÁÎÎÙÊ ÍÏÍÅÎÔ ÔÏÌØËÏ "trigger" É "callback" ÒÅÖÉÍÙ ÉÓÐÏÌØÚÕÀÔ ×ÈÏÄÑÝÉÅ ÏÐÃÉÉ. äÌÑ "trigger" ÒÅÖÉÍÁ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÍÏÖÅÔ ÂÙÔØ ÏÄÉÎ ÉÚ <constant>E_USER_NOTICE</constant>, <constant>E_USER_WARNING</constant> ÉÌÉ <constant>E_USER_ERROR</constant>. äÌÑ "callback" ÒÅÖÉÍÁ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÄÏÌÖÅÎ ÂÙÔØ ÉÍÑ callback-ÆÕÎËÃÉÉ (string) ÉÌÉ Ä×Õ-ÜÌÅÍÅÎÔÎÙÊ ÍÁÓÓÉ× (object,string) ÐÒÅÄÓÔÁ×ÌÑÀÝÉÊ ÉÍÅÎÁ ÏÂßÅËÔÁ É ÍÅÔÏÄÁ. </simpara> </listitem> </varlistentry> </variablelist> </para> </refsect2> </refsect1> </refentry> </reference> <!-- 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 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 -->