adiju           Tue Mar  5 05:00:52 2002 EDT

  Added files:                 
    /phpdoc/ro/functions        errorfunc.xml 
  Log:
  First romanian version of errorfunc.xml. Translated by Adrian Ciutureanu.
  

Index: phpdoc/ro/functions/errorfunc.xml
+++ phpdoc/ro/functions/errorfunc.xml
<?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
-->

Reply via email to