Partners & Affiliates














[PHP-DOC] cvs: phpdoc /hu/features error-handling.xml From: Hojtsy Gabor (hgoba <email protected>)
Date: 10/29/00

goba Sun Oct 29 08:13:46 2000 EDT

  Modified files:
    /phpdoc/hu/features error-handling.xml
  Log:
  
  Getting in sync...
  
Index: phpdoc/hu/features/error-handling.xml
diff -u phpdoc/hu/features/error-handling.xml:1.2 phpdoc/hu/features/error-handling.xml:1.3
--- phpdoc/hu/features/error-handling.xml:1.2 Sun Sep 17 01:04:57 2000
+++ phpdoc/hu/features/error-handling.xml Sun Oct 29 08:13:46 2000
@@ -9,10 +9,10 @@
    <tgroup cols="4">
     <thead>
      <row>
- <entry>érték</entry>
- <entry>szimbólum</entry>
- <entry>leírás</entry>
- <entry>megjegyzés</entry>
+ <entry>Érték</entry>
+ <entry>Szimbólum</entry>
+ <entry>Leírás</entry>
+ <entry>Megjegyzés</entry>
      </row>
     </thead>
     <tbody>
@@ -96,25 +96,37 @@
  <para>
   A fenti értékek (akár a numerikusak, akár a szimbolikusak) arra használhatóak,
   hogy felépíts egy bitmask-ot, ami megadja, hogy mely hibákat kell jeleznie
- a PHP-nek. Használhatod a '|','&amp;' és '~' bitszintű operátorokat, hogy
- összeállítsd a fenti elemekből a neked megfelelő értéket, vagy letilts
- egyes hibákat. Alapbeállításban a 'notice' figyelmeztetéseken
- kívül minden hibajelentés aktív, ami a <literal>E_ALL & ~E_NOTICE</literal>
- kifejezésnek felel meg a PHP4-ben és 7 a PHP3-ban, ugyanis a PHP 3 nem
- támogatja a szimbolikus jelöléseket.
- </para>
+ a PHP-nek. Használhatod <link linkend="language.operators.bitwise">bitszintű
+ operátorokat</link>, hogy összeállítsd a fenti elemekből a neked megfelelő
+ értéket, vagy letilts egyes hibákat. Csak a '|', '~', '!', és '&amp;'
+ operátorok használhatóak <filename>php.ini</filename> fájlban, és
+ semmilyen operátor sem használható a <filename>php3.ini</filename>
+ fájlban.
+ </para>
+ <para>
+ PHP 4-ben az alapbeállítású <link
+ linkend="ini.error-reporting">error_reporting</link> érték
+ <literal>E_ALL &amp; ~E_NOTICE</literal>, ami azt jelenti, hogy minden
+ hiba és figyelmeztetés megjelenik az E_NOTICE-szint kivételével. PHP 3-ban
+ az alapbeállítás <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>,
+ ugyanezt jelenti. Vedd figyelembe, hogy ezek a konstansok nem
+ támogatottak a PHP 3 <filename>php3.ini</filename> fájljában,
+ ezért az <link linkend="ini.error-reporting">error_reporting</link>
+ beállítás a numerikus <literal>7</literal> érték.
+ </para>
 
  <para>
- Ezek a beállítások az ini file error_reporting direktívájával
- változtathatóak meg, vagy az Apache http.conf file-ban a
- php_error_reporting (php3_error_reporting PHP 3 esetén)
- direktívával vagy végül futásidőben egy scriptben az
+ Ezek a beállítások az ini fájl <link
+ linkend="ini.error-reporting">error_reporting</link> direktívájával
+ változtathatóak meg, vagy az Apache <filename>httpd.conf</filename>
+ fájlban a php_error_reporting (php3_error_reporting PHP 3 esetén)
+ direktívával vagy végül futásidőben egy szkriptben az
   <function>error_reporting</function> függvénnyel.
  </para>
 
  <warning>
   <para>
- Ha a kódod vagy a szervered frissíted PHP3-ról PHP4-re, jól teszed,
+ Ha a kódod vagy a szervered frissíted PHP 3-ról PHP 4-re, jól teszed,
    ha ellenőrzöd ezeket a beállításokat és az
    <function>error_reporting</function> függvényhívásokat, különben
    akaratlanul kikapcsolod az új hibatípusokat, különösen az
@@ -133,12 +145,139 @@
    $php_errormsg globális változóban.
   </para>
 
- <warning>
+ <warning>
+ <para>
+ Jelenleg a "@" hibakezelő operátor kikapcsolja azon kritikus hibák
+ jelentését is, amik megállítják a szkript futását. Más problémák
+ mellett, ha egy függvényből érkező hibaüzenetek elnyelésére
+ használod a "@" jelet, meg fog állni a szkript futása, ha
+ nem létezik a megadott függvény, vagy elírtad a nevét.
+ </para>
+ </warning>
+
+ <para>
+ Az alábbiakban láthatsz egy példát a PHP hibakezelő képességeire.
+ Definiálunk egy hibakezelő függvényt, ami tárolja a hibákat egy
+ fájlba (XML formátummal) és email-t küld a fejlesztőnek ha
+ a programban kritikus hiba történik.
+ <example>
+ <title>Hibakezelés használata egy szkriptben</title>
+ <programlisting role="php">
+<![CDATA[
+<?php
+// saját hibakezelést építünk
+error_reporting(0);
+
+// felhasználó által definiált hibakezelő függvény
+function sajatHibaKezelo ($hibaszam, $hibauzenet, $filenev, $sorszam, $valtozok) {
+
+ // időbélyeg a hibához
+ $ido = date("Y-m-d H:i:s (T)");
+
+ // Asszociatív tömb definiálása a hibaszövegeknek.
+ // Valójában csak a 2,8,256,512 és 1024 elemeket
+ // vesszük figyelembe
+ $hibatipus = array (
+ 1 => "Error",
+ 2 => "Warning",
+ 4 => "Parsing Error",
+ 8 => "Notice",
+ 16 => "Core Error",
+ 32 => "Core Warning",
+ 64 => "Compile Error",
+ 128 => "Compile Warning",
+ 256 => "User Error",
+ 512 => "User Warning",
+ 1024=> "User Notice"
+ );
+
+ // azok a hibatípusok, amikre a változókat is el kell menteni
+ $user_hibak = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
+
+ $hiba = "<errorentry>\n";
+ $hiba .= "\t<datetime>".$ido."</datetime>\n";
+ $hiba .= "\t<errornum>".$hibaszam."</errnumber>\n";
+ $hiba .= "\t<errortype>".$hibatipus[$hibaszam]."</errortype>\n";
+ $hiba .= "\t<errormsg>".$hibauzenet."</errormsg>\n";
+ $hiba .= "\t<scriptname>".$filenev."</scriptname>\n";
+ $hiba .= "\t<scriptlinenum>".$sorszam."</scriptlinenum>\n";
+
+ if (in_array($hibaszam, $user_hibak))
+ $hiba .= "\t<vartrace>".wddx_serialize_value($valtozok,"Variables")."</vartrace>\n";
+ $hiba .= "</errorentry>\n\n";
+
+ // teszteléshez
+ // echo $hiba;
+
+ // a hibanapló elmentése, email küldés ha kritikus hiba van
+ error_log($hiba, 3, "/usr/local/php4/error.log");
+ if ($hibaszam == E_USER_ERROR)
+ mail("phpdev <email protected>","Kritikus User Hiba",$hiba);
+}
+
+
+function tavolsag ($vektor1, $vektor2) {
+ if (!is_array($vektor1) || !is_array($vektor2)) {
+ trigger_error("Helytelen parameterek, tomboket varok", E_USER_ERROR);
+ return NULL;
+ }
+
+ if (count($vektor1) != count($vektor2)) {
+ trigger_error("A vektorok ugyanolyan dimenziojuak legyenek", E_USER_ERROR);
+ return NULL;
+ }
+
+ for ($i=0; $i<count($vektor1); $i++) {
+ $c1 = $vektor1[$i]; $c2 = $vektor2[$i];
+ $d = 0.0;
+ if (!is_numeric($c1)) {
+ trigger_error("Az elso vektor $i koordinataja nem szam, nullaval szamolok",
+ E_USER_WARNING);
+ $c1 = 0.0;
+ }
+ if (!is_numeric($c2)) {
+ trigger_error("A masodik vektor $i koordinataja nem szam, nullaval szamolok",
+ E_USER_WARNING);
+ $c2 = 0.0;
+ }
+ $d += $c2*$c2 - $c1*$c1;
+ }
+ return sqrt($d);
+}
+
+$regi_hiba_kezelo = set_error_handler("sajatHibaKezelo");
+
+// nem definiált konstans, warning-ot generál
+$t = NEM_VAGYOK_DEFINIALVA;
+
+// néhány "vektor" definiálása
+$a = array (2,3, "ize");
+$b = array (5.5, 4.3, -1.6);
+$c = array (1, -3);
+
+// user hiba generálása
+$t1 = tavolsag($c, $b)."\n";
+
+// újabb user hiba generálása
+$t2 = tavolsag($b, "ez nem tömb")."\n";
+
+// warning generálása
+$t3 = tavolsag($a, $b)."\n";
+?>
+ </programlisting>
+ </example>
+ Ez csak egy egyszerű példa, ami bemutatja, hogy hogyan kell használni a
+ <link linkend="ref.errorfunc">Hibakezelő és naplózó függvényeket</link>.
+ </para>
+
   <para>
- Jelenleg a &quot;@&quot; prefix az olyan kritikus hibák jelzését is
- megszünteti, amik megállítják a script futását.
+ Lásd még: <function>error_reporting</function>,
+ <function>error_log</function>,
+ <function>set_error_handler</function>,
+ <function>restore_error_handler</function>,
+ <function>trigger_error</function>, és
+ <function>user_error</function>.
   </para>
- </warning>
 
 </chapter>