cvs: phpdoc /ro/functions errorfunc.xml
| From: | Adrian Ciutureanu | Date: | Mon, 01 Apr 2002 10:44:44 +0000 |
| Subject: | cvs: phpdoc /ro/functions errorfunc.xml | ||
| Groups: | php.doc | ||
| Request: | Send a blank email to phpdoc+get-969343897@lists.php.net to get a copy of this message | ||
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, - "operator@domeniul-tau.ro"); -} - -// 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, + 'operator@example.com'); +} + +// 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 +--> +
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, - "operator@domeniul-tau.ro"); -} - -// 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, + 'operator@example.com'); +} + +// 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 +--> +