adu Mon Apr 1 05:44:44 2002 EDT
Modified files:
/phpdoc/ro/functions errorfunc.xml
Log:
Reformated PHP code examples according to
http://cvs.php.net/co.php/phpdoc/RFC/coding_standards?r=1.3
and replaced tabs with spaces.
Index: phpdoc/ro/functions/errorfunc.xml
diff -u phpdoc/ro/functions/errorfunc.xml:1.1 phpdoc/ro/functions/errorfunc.xml:1.2
--- phpdoc/ro/functions/errorfunc.xml:1.1 Tue Mar 5 05:00:51 2002
+++ phpdoc/ro/functions/errorfunc.xml Mon Apr 1 05:44:44 2002
@@ -1,572 +1,578 @@
-<?xml version="1.0" encoding="iso-8859-2"?>
-<!-- $Revision: 1.1 $ -->
- <reference id="ref.errorfunc">
- <title>Erori - gestiune �i �nregistrare</title>
- <titleabbrev>Erorile �i �nregistrarea</titleabbrev>
-
- <partintro>
- <para>
- Aceste func�ii se ocup� cu tratarea �i �nregistrarea erorilor. Ele permit
definirea
- propriilor reguli pentru tratarea erorilor, precum �i modificarea modului �n
care
- erorile pot fi �nregistrate. Ve�i putea adapta �i �mbun�t��i modul �n care
erorile sunt
- raportate �i �nregistrate, pentru satisfacerea propriilor nevoi.
- </para>
- <para>
- Cu func�iile de �nregistrare pute�i trimite mesaje la alte ma�ini, la o adresa de
email
- (sau la un sistem email pe pager!), la sisteme jurnal etc. �n acest fel, pute�i
- �nregistra �i monitoriza cele mai importante p�r�i ale aplica�iilor �i ale
paginilor web.
- </para>
- <para>
- Func�iile pentru raportarea erorilor v� permit personalizarea nivelului �i a
tipului de
- erori raportate, plec�nd de la simple notific�ri �i p�n� la func�ii
personalizate.
- </para>
- </partintro>
-
- <refentry id="function.error-log">
- <refnamediv>
- <refname>error_log</refname>
- <refpurpose>Trimite un mesaj de eroare c�tre o destina�ie</refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>int</type><methodname>error_log</methodname>
- <methodparam><type>string</type><parameter>message</parameter></methodparam>
- <methodparam
choice="opt"><type>int</type><parameter>message_type</parameter></methodparam>
- <methodparam
choice="opt"><type>string</type><parameter>destination</parameter></methodparam>
- <methodparam
choice="opt"><type>string</type><parameter>extra_headers</parameter></methodparam>
- </methodsynopsis>
- <para>
- Trimite un mesaj de eroare c�tre jurnalul de erori al serverului web, c�tre un
port
- <acronym>TCP</acronym> sau c�tre un fi�ier. Primul parametru,
- <parameter>message</parameter>, este mesajul de eroare care trebuie �nregistrat.
- Cel de-al doilea parametru, <parameter>message_type</parameter>, spune unde
trebuie
- s� fie trimis mesajul:
- <table>
- <title>Tipuri de �nregistr�ri <function>error_log</function></title>
- <tgroup cols="2">
- <tbody>
- <row>
- <entry>0</entry>
- <entry>
- <parameter>message</parameter> este trimis la sistemul de �nregistrare al PHP,
folosind
- mecanismul de �nregistrare al sistemului de operare sau un fi�ier, �n
func�ie de cum este
- setat� directiva de configurare <link
linkend="ini.error-log">error_log</link>.
- </entry>
- </row>
- <row>
- <entry>1</entry>
- <entry>
- <parameter>message</parameter> va fi trimis c�tre adresa de email setat� de
c�tre parametrul
- <parameter>destination</parameter>. Acesta este singurul tip de �nregistrare
unde este
- folosit cel de-al patrulea parametru, <parameter>extra_headers</parameter>.
Acest tip de
- mesaj folose�te aceea�i func�ie intern� ca �i <function>mail</function>.
- </entry>
- </row>
- <row>
- <entry>2</entry>
- <entry>
- <parameter>message</parameter> este trimis c�tre conexiunea de depanare PHP.
Aceast�
- op�iune este disponibil� doar dac� directiva
- <link linkend="install.configure.enable-debugger">remote_debugging</link> a
fost activat�.
- �n acest caz, parametrul <parameter>destination</parameter> specific� numele
gazdei sau
- adresa IP, op�ional num�rul portului, pentru socket-ul de recep�ionare al
informa�iilor
- de depanare.
- </entry>
- </row>
- <row>
- <entry>3</entry>
- <entry>
- <parameter>message</parameter> este ad�ugat la fi�ierul
- <parameter>destination</parameter>.
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- <warning>
- <para>
- Depanarea distant� via TCP/IP este o facilitate disponibil� �n PHP 3 �i
- <emphasis>nu</emphasis> este disponibil� �n PHP 4.
- </para>
- </warning>
- <para>
- <example role="php">
- <title>Exemple <function>error_log</function></title>
- <programlisting role="php">
-<![CDATA[
-// se trimite o notificare prin serverul de �nregistrare
-// dac� nu se poate conecta la baza de date
-if (!Ora_Logon ($username, $password)) {
- error_log ("Baza de date Oracle nu este disponibila!", 0);
-}
-
-// notific� administratorul prin email
-if (!($foo = allocate_new_foo()) {
- error_log ("A ap�rut o problema, nu s-a alocat memorie pentru FOO!", 1,
- "[EMAIL PROTECTED]");
-}
-
-// alte modalit��i de apelare error_log():
-error_log ("Ai dat-o-n bar�!", 2, "127.0.0.1:7000");
-error_log ("Ai dat-o-n bar�!", 2, "loghost");
-error_log ("Ai dat-o-n bar�!", 3, "/var/tmp/my-errors.log");
-]]>
- </programlisting>
- </example>
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="function.error-reporting">
- <refnamediv>
- <refname>error_reporting</refname>
- <refpurpose>Seteaz� care erori PHP sunt raportate</refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>int</type><methodname>error_reporting</methodname>
- <methodparam
choice="opt"><type>int</type><parameter>level</parameter></methodparam>
- </methodsynopsis>
- <para>
- Seteaz� nivelul de raportare a erorilor PHP �i returneaz� nivelul anterior.
Nivelul de
- raportare poate fi o masc� de bi�i sau numele unei constante. Folosirea
numelor de
- constante este �ncurajat� �n mod deosebit pentru a asigura compatibilitatea
cu versiunile
- urm�toare. Pe m�sur� ce au fost ad�ugate nivele de eroare, rangul numerelor
�ntregi a
- crescut, a�a c� vechile nivele de eroare bazate pe valori �ntregi nu vor avea
totdeauna
- comportamentul a�teptat.
- </para>
- <para>
- <example role="php">
- <title>Schimb�ri ale valorilor �ntregi</title>
- <programlisting role="php">
-<![CDATA[
-error_reporting (55); // echivalent �n PHP 3 cu E_ALL ^ E_NOTICE
-
-/* ...�n PHP 4, '55' va �nsemna (E_ERROR | E_WARNING | E_PARSE |
-E_CORE_ERROR | E_CORE_WARNING) */
-
-error_reporting (2039); // echivalent �n PHP 4 cu E_ALL ^ E_NOTICE
-
-error_reporting (E_ALL ^ E_NOTICE); // Identic �n PHP 3 �i 4
-]]>
- </programlisting>
- </example>
- Urma�i leg�turile constantelor pentru a afla ce reprezint�:
- <table>
- <title>Valori bit pentru <function>error_reporting</function></title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>valoare</entry>
- <entry>constant�</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>1</entry>
- <entry>
- <link linkend="internal.e-error">E_ERROR</link>
- </entry>
- </row>
- <row>
- <entry>2</entry>
- <entry>
- <link linkend="internal.e-warning">E_WARNING</link>
- </entry>
- </row>
- <row>
- <entry>4</entry>
- <entry>
- <link linkend="internal.e-parse">E_PARSE</link>
- </entry>
- </row>
- <row>
- <entry>8</entry>
- <entry>
- <link linkend="internal.e-notice">E_NOTICE</link>
- </entry>
- </row>
- <row>
- <entry>16</entry>
- <entry>
- <link linkend="internal.e-core-error">E_CORE_ERROR</link>
- </entry>
- </row>
- <row>
- <entry>32</entry>
- <entry>
- <link linkend="internal.e-core-warning">E_CORE_WARNING</link>
- </entry>
- </row>
- <row>
- <entry>64</entry>
- <entry>
- <link linkend="internal.e-compile-error">E_COMPILE_ERROR</link>
- </entry>
- </row>
- <row>
- <entry>128</entry>
- <entry>
- <link linkend="internal.e-compile-warning">E_COMPILE_WARNING</link>
- </entry>
- </row>
- <row>
- <entry>256</entry>
- <entry>
- <link linkend="internal.e-user-error">E_USER_ERROR</link>
- </entry>
- </row>
- <row>
- <entry>512</entry>
- <entry>
- <link linkend="internal.e-user-warning">E_USER_WARNING</link>
- </entry>
- </row>
- <row>
- <entry>1024</entry>
- <entry>
- <link linkend="internal.e-user-error">E_USER_NOTICE</link>
- </entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </para>
- <para>
- <example role="php">
- <title>Exemple <function>error_reporting</function></title>
- <programlisting role="php">
-<![CDATA[
-error_reporting(0);
-/* Opre�te orice raportare */
-
-/* Exemplele sunt prezentate mai �nt�i �n sintaxa veche (pentru PHP 2/3)
- * apoi �n sintaxa nou� (cea recomandat�, pentru PHP 3/4)
- */
-
-error_reporting (7);
-error_reporting (E_ERROR | E_WARNING | E_PARSE);
-/* bine de folosit pentru erori simple de rulare */
-
-error_reporting (15);
-error_reporting (E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
-/* bine de folosit pentru raportarea variabilelor neini�ializate (posibil scrise
gre�it) */
-
-error_reporting (63);
-error_reporting (E_ALL);
-/* raporteaz� toate erorile PHP */
-]]>
- </programlisting>
- </example>
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="function.restore-error-handler">
- <refnamediv>
- <refname>restore_error_handler</refname>
- <refpurpose>
- Restaureaz� func�ia anterioar� de tratare a erorilor
- </refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>void</type><methodname>restore_error_handler</methodname>
- <void/>
- </methodsynopsis>
- <para>
- Se folose�te dup� schimbarea func�iei de tratare a erorilor prin apelarea
func�iei
- <function>set_error_handler</function>, pentru a reveni la func�ia anterioar� de
tratare a erorilor (care poate fi nativ� sau definit� de utilizator).
- </para>
- <para>
- Mai consulta�i <function>error_reporting</function>,
- <function>set_error_handler</function>,
- <function>trigger_error</function>, <function>user_error</function>
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="function.set-error-handler">
- <refnamediv>
- <refname>set_error_handler</refname>
- <refpurpose>
- Seteaz� o func�ie de tratare a erorilor definit� de utilizator
- </refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>string</type><methodname>set_error_handler</methodname>
-
<methodparam><type>string</type><parameter>error_handler</parameter></methodparam>
- </methodsynopsis>
- <para>
- Seteaz� o func�ie utilizator (<parameter>error_handler</parameter>) pentru
gestionarea
- erorilor �ntr-un script. Returneaz� func�ia anterioar� de gestiune (dac� exist�),
- sau &false; �n cazul unei erori. Aceast� func�ie v� permite definirea
propriului mod
- de tratare a erorilor la execu�ie, de exemplu �n aplica�ii �n care
- este nevoie de refacerea unor date/fi�iere c�nd apare o eroare critic�,
- sau este necesar� declan�area unei erori dac� sunt �ndeplinite anumite condi�ii
- (folosind <function>trigger_error</function>).
- </para>
- <para>
- Func�ia definit� de utilizator trebuie s� accepte doi parametri: codul de
eroare
- �i un �ir de caractere care descrie eroarea. �ncep�nd cu versiunea PHP 4.0.2
sunt
- accepta�i �nc� trei parametri op�ionali: numele fi�ierului �n care a ap�rut
eroarea,
- num�rul liniei la care s-a produs aceast� eroare �i contextul �n care ea a
ap�rut
- (un tablou care indic� tabela de simboluri activ� �n punctul �n care a ap�rut
eroarea).
- </para>
- <para>
- Mai jos este exemplificat� tratarea unei excep�ii interne prin declan�area
erorilor
- �i tratarea lor cu o func�ie definit� de utilizator:
- </para>
- <para>
- <example>
- <title>
- Tratarea erorilor cu ajutorul func�iilor
<function>set_error_handler</function> �i
- <function>trigger_error</function>
- </title>
- <programlisting role="php">
-<![CDATA[
-<?php
-
-// redefinirea constantelor de eroare - doar �n PHP 4
-define ('FATAL', E_USER_ERROR);
-define ('ERROR', E_USER_WARNING);
-define ('WARNING', E_USER_NOTICE);
-
-// setarea nivelului de raportare a erorilor pentru acest script
-error_reporting (FATAL | ERROR | WARNING);
-
-// func�ia de tratare a erorilor
-function myErrorHandler ($errlevel, $errstr, $errfile, $errline) {
- switch ($errlevel) {
- case FATAL:
- echo "<b>FATAL</b> [$errlevel] $errstr<br>\n";
- echo " Eroare fatala la linia ".$errline." in fisierul ".$errfile;
- echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";
- echo "Abandon...<br>\n";
- exit(1);
- break;
- case ERROR:
- echo "<b>ERROR</b> [$errlevel] $errstr<br>\n";
- break;
- case WARNING:
- echo "<b>WARNING</b> [$errlevel] $errstr<br>\n";
- break;
- default:
- echo "Eroare de tip necunoscut: [$errlevel] $errstr<br>\n";
- break;
- }
-}
-
-// func�ie pentru testarea trat�rii erorilor
-function scale_by_log ($vect, $scale) {
- if (!is_numeric($scale) || $scale <= 0)
- trigger_error("log(x) pentru x <= 0 nu este definita, ati folosit: scale =
$scale",
- FATAL);
- if (!is_array($vect)) {
- trigger_error("Tablou de intrare incorect, trebuia un tablou de valori", ERROR);
- return null;
- }
- for ($i = 0; $i < count($vect); $i++) {
- if (!is_numeric($vect[$i]))
- trigger_error("Valoarea de la pozitia $i nu este un numar, se va folosi 0
(zero)",
- WARNING);
- $temp[$i] = log($scale) * $vect[$i];
- }
- return $temp;
-}
-
-// setarea gestionarului de erori definit de utilizator
-$old_error_handler = set_error_handler("myErrorHandler");
-
-// se define�te un tablou cu un element non-numeric
-// �i se declan�eaz� eroare
-echo "tablou a<pre>\n";
-$a = array(2, 3, "foo", 5.5, 43.3, 21.11);
-print_r($a);
-echo "</pre>";
-
-// se genereaz� al doilea tablou �i se declan�eaz� o avertizare
-echo "----<br>\ntablou b - o atentionare (b = log(PI) * a)\n<pre>";
-$b = scale_by_log($a, M_PI);
-print_r($b);
-echo "</pre>";
-
-// se transmite un �ir de caractere �n loc de un tablou
-echo "----<br>\ntablou c - eroare\n<pre>";
-$c = scale_by_log("nu este tablou", 2.3);
-var_dump($c);
-echo "</pre>\n";
-
-// o eroare critica: nu este definit log() pentru zero sau numere negative
-echo "----<br>\ntablou d - eroare fatala\n";
-$d = scale_by_log($a, -2.5);
-
-?>
-]]>
- </programlisting>
- </example>
- Rularea script-ului va produce:
- <informalexample>
- <programlisting>
-<![CDATA[
-tablou a
-Array
-(
- [0] => 2
- [1] => 3
- [2] => foo
- [3] => 5.5
- [4] => 43.3
- [5] => 21.11
-)
-
-----
-tablou b - o atentionare (b = log(PI) * a)
-WARNING [1024] Valoarea de la pozitia 2 nu este un numar, se va folosi 0 (zero)
-Array
-(
- [0] => 2.2894597716988
- [1] => 3.4341896575482
- [2] => 0
- [3] => 6.2960143721717
- [4] => 49.566804057279
- [5] => 24.165247890281
-)
-
-----
-tablou c - eroare
-ERROR [512] Tablou de intrare incorect, trebuia un tablou de valori
-NULL
-
-----
-tablou d - eroare fatala FATAL [256] log(x) pentru x <= 0 nu este definita, ati
folosit: scale = -2.5
-Eroare fatala la linia 37 in fisierul /softure/htdocs/test.php, PHP 4.0.6 (Linux)
-Abandon...
-1
-]]>
- </programlisting>
- </informalexample>
- </para>
- <para>
- Este important de re�inut c� gestionarul standard PHP al erorilor va fi ignorat
- complet. Set�rile efectuate de <function>error_reporting</function> nu vor
mai avea
- nici un efect �i va fi apelat� doar func�ia definit� de utilizator. Se poate
citi �n
- continuare valoarea curent� setat� de <function>error_reporting</function>
pentru folosire
- adecvat�. Trebuie f�cut� men�iunea c� aceast� valoare va fi zero dac�
instruc�iunea
- care a generat eroarea este precedat� de
- <link linkend="language.operators.errorcontrol">operatorul @</link> de
control a erorilor.
- </para>
- <para>
- De asemenea, trebuie precizat c� este responsabilitatea programatorului s�
apeleze func�ia
- <function>die</function> dac� este necesar. Dac� func�ia de tratare a erorii
nu �ntrerupe
- explicit execu�ia, scriptul va continua cu instruc�iunea urm�toare celei care
a generat eroarea.
- </para>
- <para>
- Mai consulta�i <function>error_reporting</function>,
- <function>restore_error_handler</function>,
- <function>trigger_error</function>, <function>user_error</function>.
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="function.trigger-error">
- <refnamediv>
- <refname>trigger_error</refname>
- <refpurpose>
- Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
- </refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>void</type><methodname>trigger_error</methodname>
- <methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
- <methodparam
choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
- </methodsynopsis>
- <para>
- Se folose�te pentru a declan�a o eroare condi�ionat� de utilizator. Se poate
folosi
- �n conjunc�ie cu gestionarul nativ al erorilor sau cu o func�ie definit� de
utilizator
- (<function>set_error_handler</function>). Func�ioneaz� doar cu familia de
constante
- E_USER, valoarea implicit� pentru <parameter>error_type</parameter> fiind
<constant>E_USER_NOTICE</constant>.
- </para>
- <para>
- Aceast� func�ie este util� atunci c�nd se dore�te generarea unui r�spuns
anume
- pentru o excep�ie ap�rut� �n timpul rul�rii. De exemplu:
- <informalexample>
- <programlisting>
-<![CDATA[
-if (assert ($divisor == 0))
- trigger_error ("�mp�r�irea la zero nu este permis�", E_USER_ERROR);
-]]>
- </programlisting>
- </informalexample>
- <note>
- <para>
- Consulta�i <function>set_error_handler</function> pentru un exemplu mai detaliat.
- </para>
- </note>
- </para>
- <para>
- Mai consulta�i <function>error_reporting</function>,
- <function>set_error_handler</function>,
- <function>restore_error_handler</function>,
- <function>user_error</function>.
- </para>
- </refsect1>
- </refentry>
-
- <refentry id="function.user-error">
- <refnamediv>
- <refname>user_error</refname>
- <refpurpose>
- Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
- </refpurpose>
- </refnamediv>
- <refsect1>
- <title>Descriere</title>
- <methodsynopsis>
- <type>void</type><methodname>user_error</methodname>
- <methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
- <methodparam
choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
- </methodsynopsis>
- <para>
- Acesta este un alias pentru func�ia <function>trigger_error</function>.
- </para>
- <para>
- Mai consulta�i <function>error_reporting</function>,
- <function>set_error_handler</function>,
- <function>restore_error_handler</function>,
- <function>trigger_error</function>.
- </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
-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
--->
-
+<?xml version="1.0" encoding="iso-8859-2"?>
+<!-- $Revision: 1.2 $ -->
+ <reference id="ref.errorfunc">
+ <title>Erori - gestiune �i �nregistrare</title>
+ <titleabbrev>Erorile �i �nregistrarea</titleabbrev>
+
+ <partintro>
+ <para>
+ Aceste func�ii se ocup� cu tratarea �i �nregistrarea erorilor. Ele permit
+definirea
+ propriilor reguli pentru tratarea erorilor, precum �i modificarea modului �n care
+ erorile pot fi �nregistrate. Ve�i putea adapta �i �mbun�t��i modul �n care
+erorile sunt
+ raportate �i �nregistrate, pentru satisfacerea propriilor nevoi.
+ </para>
+ <para>
+ Cu func�iile de �nregistrare pute�i trimite mesaje la alte ma�ini, la o adresa de
+email
+ (sau la un sistem email pe pager!), la sisteme jurnal etc. �n acest fel, pute�i
+ �nregistra �i monitoriza cele mai importante p�r�i ale aplica�iilor �i ale
+paginilor web.
+ </para>
+ <para>
+ Func�iile pentru raportarea erorilor v� permit personalizarea nivelului �i a
+tipului de
+ erori raportate, plec�nd de la simple notific�ri �i p�n� la func�ii personalizate.
+ </para>
+ </partintro>
+
+ <refentry id="function.error-log">
+ <refnamediv>
+ <refname>error_log</refname>
+ <refpurpose>Trimite un mesaj de eroare c�tre o destina�ie</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>int</type><methodname>error_log</methodname>
+ <methodparam><type>string</type><parameter>message</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>message_type</parameter></methodparam>
+ <methodparam
+choice="opt"><type>string</type><parameter>destination</parameter></methodparam>
+ <methodparam
+choice="opt"><type>string</type><parameter>extra_headers</parameter></methodparam>
+ </methodsynopsis>
+ <para>
+ Trimite un mesaj de eroare c�tre jurnalul de erori al serverului web, c�tre un
+port
+ <acronym>TCP</acronym> sau c�tre un fi�ier. Primul parametru,
+ <parameter>message</parameter>, este mesajul de eroare care trebuie �nregistrat.
+ Cel de-al doilea parametru, <parameter>message_type</parameter>, spune unde
+trebuie
+ s� fie trimis mesajul:
+ <table>
+ <title>Tipuri de �nregistr�ri <function>error_log</function></title>
+ <tgroup cols="2">
+ <tbody>
+ <row>
+ <entry>0</entry>
+ <entry>
+ <parameter>message</parameter> este trimis la sistemul de �nregistrare al PHP,
+folosind
+ mecanismul de �nregistrare al sistemului de operare sau un fi�ier, �n func�ie
+de cum este
+ setat� directiva de configurare <link linkend="ini.error-log">error_log</link>.
+ </entry>
+ </row>
+ <row>
+ <entry>1</entry>
+ <entry>
+ <parameter>message</parameter> va fi trimis c�tre adresa de email setat� de
+c�tre parametrul
+ <parameter>destination</parameter>. Acesta este singurul tip de �nregistrare
+unde este
+ folosit cel de-al patrulea parametru, <parameter>extra_headers</parameter>.
+Acest tip de
+ mesaj folose�te aceea�i func�ie intern� ca �i <function>mail</function>.
+ </entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>
+ <parameter>message</parameter> este trimis c�tre conexiunea de depanare PHP.
+Aceast�
+ op�iune este disponibil� doar dac� directiva
+ <link linkend="install.configure.enable-debugger">remote_debugging</link> a
+fost activat�.
+ �n acest caz, parametrul <parameter>destination</parameter> specific� numele
+gazdei sau
+ adresa IP, op�ional num�rul portului, pentru socket-ul de recep�ionare al
+informa�iilor
+ de depanare.
+ </entry>
+ </row>
+ <row>
+ <entry>3</entry>
+ <entry>
+ <parameter>message</parameter> este ad�ugat la fi�ierul
+ <parameter>destination</parameter>.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <warning>
+ <para>
+ Depanarea distant� via TCP/IP este o facilitate disponibil� �n PHP 3 �i
+ <emphasis>nu</emphasis> este disponibil� �n PHP 4.
+ </para>
+ </warning>
+ <para>
+ <example role="php">
+ <title>Exemple <function>error_log</function></title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+// se trimite o notificare prin serverul de �nregistrare
+// dac� nu se poate conecta la baza de date
+if (!Ora_Logon ($username, $password)) {
+ error_log ('Baza de date Oracle nu este disponibila!', 0);
+}
+
+// notific� administratorul prin email
+if (!($foo = allocate_new_foo()) {
+ error_log('A ap�rut o problem�, nu s-a alocat memorie pentru FOO!', 1,
+ '[EMAIL PROTECTED]');
+}
+
+// alte modalit��i de apelare error_log():
+error_log('Ai dat-o-n bar�!', 2, '127.0.0.1:7000');
+error_log('Ai dat-o-n bar�!', 2, 'loghost');
+error_log('Ai dat-o-n bar�!', 3, '/var/tmp/my-errors.log');
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.error-reporting">
+ <refnamediv>
+ <refname>error_reporting</refname>
+ <refpurpose>Seteaz� care erori PHP sunt raportate</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>int</type><methodname>error_reporting</methodname>
+ <methodparam
+choice="opt"><type>int</type><parameter>level</parameter></methodparam>
+ </methodsynopsis>
+ <para>
+ Seteaz� nivelul de raportare a erorilor PHP �i returneaz� nivelul anterior.
+Nivelul de
+ raportare poate fi o masc� de bi�i sau numele unei constante. Folosirea numelor
+de
+ constante este �ncurajat� �n mod deosebit pentru a asigura compatibilitatea cu
+versiunile
+ urm�toare. Pe m�sur� ce au fost ad�ugate nivele de eroare, rangul numerelor
+�ntregi a
+ crescut, a�a c� vechile nivele de eroare bazate pe valori �ntregi nu vor avea
+totdeauna
+ comportamentul a�teptat.
+ </para>
+ <para>
+ <example role="php">
+ <title>Schimb�ri ale valorilor �ntregi</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+error_reporting(55); // echivalent �n PHP 3 cu E_ALL ^ E_NOTICE
+
+// ...�n PHP 4, '55' va �nsemna (E_ERROR | E_WARNING | E_PARSE |
+// E_CORE_ERROR | E_CORE_WARNING)
+
+error_reporting(2039); // echivalent �n PHP 4 cu E_ALL ^ E_NOTICE
+
+error_reporting(E_ALL ^ E_NOTICE); // Identic �n PHP 3 �i 4
+?>
+]]>
+ </programlisting>
+ </example>
+ Urma�i leg�turile constantelor pentru a afla ce reprezint�:
+ <table>
+ <title>Valori bit pentru <function>error_reporting</function></title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>valoare</entry>
+ <entry>constant�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>1</entry>
+ <entry>
+ <link linkend="internal.e-error">E_ERROR</link>
+ </entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>
+ <link linkend="internal.e-warning">E_WARNING</link>
+ </entry>
+ </row>
+ <row>
+ <entry>4</entry>
+ <entry>
+ <link linkend="internal.e-parse">E_PARSE</link>
+ </entry>
+ </row>
+ <row>
+ <entry>8</entry>
+ <entry>
+ <link linkend="internal.e-notice">E_NOTICE</link>
+ </entry>
+ </row>
+ <row>
+ <entry>16</entry>
+ <entry>
+ <link linkend="internal.e-core-error">E_CORE_ERROR</link>
+ </entry>
+ </row>
+ <row>
+ <entry>32</entry>
+ <entry>
+ <link linkend="internal.e-core-warning">E_CORE_WARNING</link>
+ </entry>
+ </row>
+ <row>
+ <entry>64</entry>
+ <entry>
+ <link linkend="internal.e-compile-error">E_COMPILE_ERROR</link>
+ </entry>
+ </row>
+ <row>
+ <entry>128</entry>
+ <entry>
+ <link linkend="internal.e-compile-warning">E_COMPILE_WARNING</link>
+ </entry>
+ </row>
+ <row>
+ <entry>256</entry>
+ <entry>
+ <link linkend="internal.e-user-error">E_USER_ERROR</link>
+ </entry>
+ </row>
+ <row>
+ <entry>512</entry>
+ <entry>
+ <link linkend="internal.e-user-warning">E_USER_WARNING</link>
+ </entry>
+ </row>
+ <row>
+ <entry>1024</entry>
+ <entry>
+ <link linkend="internal.e-user-error">E_USER_NOTICE</link>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
+ <example role="php">
+ <title>Exemple <function>error_reporting</function></title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+error_reporting(0);
+// Opre�te orice raportare
+
+// Exemplele sunt prezentate mai �nt�i �n sintaxa veche (pentru PHP 2/3)
+// apoi �n sintaxa nou� (cea recomandat�, pentru PHP 3/4)
+
+error_reporting(7);
+error_reporting(E_ERROR | E_WARNING | E_PARSE);
+// bine de folosit pentru erori simple de rulare
+
+error_reporting(15);
+error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
+// bine de folosit pentru raportarea variabilelor neini�ializate
+// (posibil scrise gre�it)
+
+error_reporting(63);
+error_reporting(E_ALL);
+// raporteaz� toate erorile PHP
+?>
+]]>
+ </programlisting>
+ </example>
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.restore-error-handler">
+ <refnamediv>
+ <refname>restore_error_handler</refname>
+ <refpurpose>
+ Restaureaz� func�ia anterioar� de tratare a erorilor
+ </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>void</type><methodname>restore_error_handler</methodname>
+ <void/>
+ </methodsynopsis>
+ <para>
+ Se folose�te dup� schimbarea func�iei de tratare a erorilor prin apelarea
+func�iei
+ <function>set_error_handler</function>, pentru a reveni la func�ia anterioar� de
+tratare a erorilor (care poate fi nativ� sau definit� de utilizator).
+ </para>
+ <para>
+ Mai consulta�i <function>error_reporting</function>,
+ <function>set_error_handler</function>,
+ <function>trigger_error</function>, <function>user_error</function>
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.set-error-handler">
+ <refnamediv>
+ <refname>set_error_handler</refname>
+ <refpurpose>
+ Seteaz� o func�ie de tratare a erorilor definit� de utilizator
+ </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>string</type><methodname>set_error_handler</methodname>
+
+<methodparam><type>string</type><parameter>error_handler</parameter></methodparam>
+ </methodsynopsis>
+ <para>
+ Seteaz� o func�ie utilizator (<parameter>error_handler</parameter>) pentru
+gestionarea
+ erorilor �ntr-un script. Returneaz� func�ia anterioar� de gestiune (dac� exist�),
+ sau &false; �n cazul unei erori. Aceast� func�ie v� permite definirea propriului
+mod
+ de tratare a erorilor la execu�ie, de exemplu �n aplica�ii �n care
+ este nevoie de refacerea unor date/fi�iere c�nd apare o eroare critic�,
+ sau este necesar� declan�area unei erori dac� sunt �ndeplinite anumite condi�ii
+ (folosind <function>trigger_error</function>).
+ </para>
+ <para>
+ Func�ia definit� de utilizator trebuie s� accepte doi parametri: codul de eroare
+ �i un �ir de caractere care descrie eroarea. �ncep�nd cu versiunea PHP 4.0.2 sunt
+ accepta�i �nc� trei parametri op�ionali: numele fi�ierului �n care a ap�rut
+eroarea,
+ num�rul liniei la care s-a produs aceast� eroare �i contextul �n care ea a ap�rut
+ (un tablou care indic� tabela de simboluri activ� �n punctul �n care a ap�rut
+eroarea).
+ </para>
+ <para>
+ Mai jos este exemplificat� tratarea unei excep�ii interne prin declan�area
+erorilor
+ �i tratarea lor cu o func�ie definit� de utilizator:
+ </para>
+ <para>
+ <example>
+ <title>
+ Tratarea erorilor cu ajutorul func�iilor
+<function>set_error_handler</function> �i
+ <function>trigger_error</function>
+ </title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+// redefinirea constantelor de eroare - doar �n PHP 4
+define ('FATAL', E_USER_ERROR);
+define ('ERROR', E_USER_WARNING);
+define ('WARNING', E_USER_NOTICE);
+
+// setarea nivelului de raportare a erorilor pentru acest script
+error_reporting(FATAL | ERROR | WARNING);
+
+// func�ia de tratare a erorilor
+function myErrorHandler ($errlevel, $errstr, $errfile, $errline)
+{
+ switch ($errlevel) {
+ case FATAL:
+ echo "<b>FATAL</b> [$errlevel] $errstr<br>\n" .
+ " Eroare fatala la linia $errline in fisierul $errfile,"
+ " PHP " . PHP_VERSION . " (" . PHP_OS . ")<br>\n";
+ "Abandon...<br>\n";
+ exit(1);
+ break;
+ case ERROR:
+ echo "<b>ERROR</b> [$errlevel] $errstr<br>\n";
+ break;
+ case WARNING:
+ echo "<b>WARNING</b> [$errlevel] $errstr<br>\n";
+ break;
+ default:
+ echo "Eroare de tip necunoscut: [$errlevel] $errstr<br>\n";
+ break;
+ }
+}
+
+// func�ie pentru testarea trat�rii erorilor
+function scale_by_log ($vect, $scale)
+{
+ if (!is_numeric($scale) || $scale <= 0) {
+ trigger_error("log(x) pentru x <= 0 nu este definita, ati folosit: scale =
+$scale", FATAL);
+ }
+ if (!is_array($vect)) {
+ trigger_error("Tablou de intrare incorect, trebuia un tablou de valori",
+ERROR);
+ return null;
+ }
+ for ($i = 0; $i < count($vect); $i++) {
+ if (!is_numeric($vect[$i])) {
+ trigger_error("Valoarea de la pozitia $i nu este un numar, se va folosi 0
+(zero)", WARNING);
+ }
+ $temp[$i] = log($scale) * $vect[$i];
+ }
+ return $temp;
+}
+
+// setarea gestionarului de erori definit de utilizator
+$old_error_handler = set_error_handler("myErrorHandler");
+
+// se define�te un tablou cu un element non-numeric
+// �i se declan�eaz� eroare
+echo "tablou a<pre>\n";
+$a = array(2, 3, "foo", 5.5, 43.3, 21.11);
+print_r($a);
+echo "</pre>";
+
+// se genereaz� al doilea tablou �i se declan�eaz� o avertizare
+echo "----<br>\ntablou b - o atentionare (b = log(PI) * a)\n<pre>";
+$b = scale_by_log($a, M_PI);
+print_r($b);
+echo "</pre>";
+
+// se transmite un �ir de caractere �n loc de un tablou
+echo "----<br>\ntablou c - eroare\n<pre>";
+$c = scale_by_log("nu este tablou", 2.3);
+var_dump($c);
+echo "</pre>\n";
+
+// o eroare critica: nu este definit log() pentru zero sau numere negative
+echo "----<br>\ntablou d - eroare fatala\n";
+$d = scale_by_log($a, -2.5);
+?>
+]]>
+ </programlisting>
+ </example>
+ Rularea script-ului va produce:
+ <informalexample>
+ <programlisting>
+<![CDATA[
+tablou a
+Array
+(
+ [0] => 2
+ [1] => 3
+ [2] => foo
+ [3] => 5.5
+ [4] => 43.3
+ [5] => 21.11
+)
+
+----
+tablou b - o atentionare (b = log(PI) * a)
+WARNING [1024] Valoarea de la pozitia 2 nu este un numar, se va folosi 0 (zero)
+Array
+(
+ [0] => 2.2894597716988
+ [1] => 3.4341896575482
+ [2] => 0
+ [3] => 6.2960143721717
+ [4] => 49.566804057279
+ [5] => 24.165247890281
+)
+
+----
+tablou c - eroare
+ERROR [512] Tablou de intrare incorect, trebuia un tablou de valori
+NULL
+
+----
+tablou d - eroare fatala FATAL [256] log(x) pentru x <= 0 nu este definita, ati
+folosit: scale = -2.5
+Eroare fatala la linia 37 in fisierul /softure/htdocs/test.php, PHP 4.0.6 (Linux)
+Abandon...
+1
+]]>
+ </programlisting>
+ </informalexample>
+ </para>
+ <para>
+ Este important de re�inut c� gestionarul standard PHP al erorilor va fi ignorat
+ complet. Set�rile efectuate de <function>error_reporting</function> nu vor mai
+avea
+ nici un efect �i va fi apelat� doar func�ia definit� de utilizator. Se poate
+citi �n
+ continuare valoarea curent� setat� de <function>error_reporting</function>
+pentru folosire
+ adecvat�. Trebuie f�cut� men�iunea c� aceast� valoare va fi zero dac�
+instruc�iunea
+ care a generat eroarea este precedat� de
+ <link linkend="language.operators.errorcontrol">operatorul @</link> de control a
+erorilor.
+ </para>
+ <para>
+ De asemenea, trebuie precizat c� este responsabilitatea programatorului s�
+apeleze func�ia
+ <function>die</function> dac� este necesar. Dac� func�ia de tratare a erorii nu
+�ntrerupe
+ explicit execu�ia, scriptul va continua cu instruc�iunea urm�toare celei care a
+generat eroarea.
+ </para>
+ <para>
+ Mai consulta�i <function>error_reporting</function>,
+ <function>restore_error_handler</function>,
+ <function>trigger_error</function>, <function>user_error</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.trigger-error">
+ <refnamediv>
+ <refname>trigger_error</refname>
+ <refpurpose>
+ Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
+ </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>void</type><methodname>trigger_error</methodname>
+ <methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
+ </methodsynopsis>
+ <para>
+ Se folose�te pentru a declan�a o eroare condi�ionat� de utilizator. Se poate
+folosi
+ �n conjunc�ie cu gestionarul nativ al erorilor sau cu o func�ie definit� de
+utilizator
+ (<function>set_error_handler</function>). Func�ioneaz� doar cu familia de
+constante
+ E_USER, valoarea implicit� pentru <parameter>error_type</parameter> fiind
+<constant>E_USER_NOTICE</constant>.
+ </para>
+ <para>
+ Aceast� func�ie este util� atunci c�nd se dore�te generarea unui r�spuns anume
+ pentru o excep�ie ap�rut� �n timpul rul�rii. De exemplu:
+ <informalexample>
+ <programlisting>
+<![CDATA[
+if (assert ($divisor == 0))
+ trigger_error ("�mp�r�irea la zero nu este permis�", E_USER_ERROR);
+]]>
+ </programlisting>
+ </informalexample>
+ <note>
+ <para>
+ Consulta�i <function>set_error_handler</function> pentru un exemplu mai detaliat.
+ </para>
+ </note>
+ </para>
+ <para>
+ Mai consulta�i <function>error_reporting</function>,
+ <function>set_error_handler</function>,
+ <function>restore_error_handler</function>,
+ <function>user_error</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.user-error">
+ <refnamediv>
+ <refname>user_error</refname>
+ <refpurpose>
+ Genereaz� o eroare/avertisment/notificare la nivelul utilizatorului
+ </refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Descriere</title>
+ <methodsynopsis>
+ <type>void</type><methodname>user_error</methodname>
+ <methodparam><type>string</type><parameter>error_msg</parameter></methodparam>
+ <methodparam
+choice="opt"><type>int</type><parameter>error_type</parameter></methodparam>
+ </methodsynopsis>
+ <para>
+ Acesta este un alias pentru func�ia <function>trigger_error</function>.
+ </para>
+ <para>
+ Mai consulta�i <function>error_reporting</function>,
+ <function>set_error_handler</function>,
+ <function>restore_error_handler</function>,
+ <function>trigger_error</function>.
+ </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
+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
+-->
+