cvs: peardoc /hu/core pear.xml /hu/core/pear pear.xml /hu/core/pear/pear intro.xml

From: Date: Fri, 14 May 2004 21:13:16 +0000
Subject: cvs: peardoc /hu/core pear.xml /hu/core/pear pear.xml /hu/core/pear/pear intro.xml
Groups: php.pear.doc 
Request: Send a blank email to pear-doc+get-3979@lists.php.net to get a copy of this message
norbert_m Fri May 14 17:13:16 2004 EDT Added files: /peardoc/hu/core pear.xml /peardoc/hu/core/pear pear.xml /peardoc/hu/core/pear/pear intro.xml Log: initial commit

http://cvs.php.net/co.php/peardoc/hu/core/pear.xml?r=1.1&p=1 Index: peardoc/hu/core/pear.xml +++ peardoc/hu/core/pear.xml <!-- EN-Revision: 1.5 Maintainer: norbert_m Status: ready --> <chapter id="core.pear"> <title>PEAR alaposztályok</title> <para> Ez a fejezet a PEAR alaposztályairól nyújt részletes információt. </para> &core.pear.pear; &core.pear.pear-error; &core.pear.pear-errorstack; &core.pear.system; </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/co.php/peardoc/hu/core/pear/pear.xml?r=1.1&p=1 Index: peardoc/hu/core/pear/pear.xml +++ peardoc/hu/core/pear/pear.xml <!-- EN-Revision: 1.6 Maintainer: norbert_m Status: ready --> <sect1 id="core.pear.pear"> <title>PEAR</title> <titleabbrev>PEAR alap- és hibakezelõ osztály</titleabbrev> <para> A <classname>PEAR</classname> osztály hibakezeléssel kapcsolatos függvényeket nyújt, és beállítja a hiba esetén bekövetkezõ viselkedést. Továbbá a csomagfejlesztõk életének megkönnyítése érdekében számos egyéb funkcióval szolgál. </para> &core.pear.pear.intro; &core.pear.pear.constants; &core.pear.pear.pear; &core.pear.pear.-pear; &core.pear.pear.getstaticproperty; &core.pear.pear.registershutdownfunction; &core.pear.pear.iserror; &core.pear.pear.raiseerror; &core.pear.pear.seterrorhandling; &core.pear.pear.expecterror; &core.pear.pear.popexpect; &core.pear.pear.loadextension; </sect1> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 --> http://cvs.php.net/co.php/peardoc/hu/core/pear/pear/intro.xml?r=1.1&p=1 Index: peardoc/hu/core/pear/pear/intro.xml +++ peardoc/hu/core/pear/pear/intro.xml <!-- EN-Revision: 1.5 Maintainer: norbert_m Status: ready --> <refentry id="core.pear.pear.intro"> <refnamediv> <refname>Bevezetés</refname> <refpurpose> A PEAR alaposztály használata (destruktorok, hibakezelés) </refpurpose> </refnamediv> <refsynopsisdiv> <synopsis>require_once "PEAR.php";</synopsis> <synopsis>class <replaceable>classname</replaceable> extends <classname>PEAR</classname> { ... }</synopsis> </refsynopsisdiv> <refsect1> <title>Leírás</title> <simpara> A PEAR alaposztály nyújtja azt a funckionalitást, amelyet a legtöbb PEAR csomag használ. Alapesetben soha nem hozunk létre példányokat közvetlenül a PEAR osztályból. A leszármazottait használjuk. </simpara> <para> Legfõbb elõnyei a következõk: <itemizedlist> <listitem> <simpara>objektumok destruktorának automatikus meghívása a szkriptek lefutása után</simpara> </listitem> <listitem> <simpara>hibakezelés</simpara> </listitem> </itemizedlist> </para> </refsect1> <refsect1 id="destructors"> <title>PEAR "destruktorok"</title> <simpara> Ha egy osztályt a <classname>PEAR</classname> osztályból származtatunk, (legyen az osztály neve például <replaceable>ClassName</replaceable>), definiálhatunk benne egy metódust _<replaceable>ClassName</replaceable> néven (az osztály neve egy hangosközzel bevezetve), ami automatikusan meghívásra fog kerülni a kérés lefutása után. Ez nem egy "valós" destruktor, mivel ha egy objektumot "törlünk", nem fog lefutni. A PHP hívja meg a destruktort, ha végzett a futtatással. Lásd az alábbi <link linkend="example.destructors">példát</link>. </simpara> <para> <warning id="destructors.warning"> <title>Fontos!</title> <para> A destruktorok megfelelõ mûködéséhez az osztályt az "=&amp; new" operátorral kell létrehozni, a következõ módon: <programlisting role="php"> $obj =&amp; new MyClass(); </programlisting> </para> <simpara> Ha csak "= new" -t használnánk, a PEAR shutdown-listájában regisztrálásra kerülõ objektum csak az eredeti objektum egy másolata lenne (a létrehozás utáni állapotban), és ennek a másolatnak a destruktora kerülne meghívásra a kérés lefutása után. </simpara> </warning> </para> </refsect1> <refsect1 id="error-handling"> <title>PEAR hibakezelés</title> <simpara> A PEAR alaposztály lehetõvé teszi, hogy sokkal komplexebb hibákkal térjünk vissza, mint egy egyszerû true/false érték, vagy hibakód. A PEAR-ben keletkezõ hiba mindig egy objektum, ami a <classname>PEAR_Error</classname> osztálynak, vagy egy leszármazottjának egy példánya. </simpara> <simpara> Az PEAR hibaobjektumainak egyik tervezési kritériuma volt, hogy egy bekövetkezõ hiba se kerüljön automatikusan kiírásra a felhasználónak, minden hibának lekezelhetõnek kell lennie anélkül, hogy bármilyen kimenete lenne. Ez teszi lehetõvé a hibák elegáns kezelését, akkor is, ha a kimeneti formátum nem HTML (például WML, vagy más XML formátum). </simpara> <simpara> A hibaobjektum többféleképpen konfigurálható - több dolgot is csinálhat létrehozásakor, például kiírhat egy hibaüzenet, kiírhatja a hibaüzenet és kiléphet, kiválthat egy hibát a PHP <function> trigger_error</function> függvényével, meghívhat egy callback fügvényt, vagy a fentiek közül mindegyiket elhagyhatja. A kívánt viselkedést tipikusan a <classname>PEAR_Error</classname> konstruktorában specifikáljuk, de minden paraméter opcionális, és beállíthatunk alapértelmezett értékeket minden objektumra, ami a <classname>PEAR</classname> osztályon alapul. Lásd a <link linkend="example.error1">"PEAR error" példák</link> címû fejezetet a használat megértéséhez és a <classname>PEAR_Error</classname> referenciát a részletekhez. </simpara> </refsect1> <refsect1> <title>Példák</title> <para> A lenti példa bemutatja, hogyan használhatjuk a PEAR emulált destruktorait egy egyszerû osztály megvalósításához, ami egy fájl tartalmát tárolja, hozzá tud fûzni adatot az objektumhoz, és visszaírja az adatot a fájlba a kérés végén: <example id="example.destructors"> <title>PEAR: emulált destruktorok</title> <programlisting role="php"> require_once "PEAR.php"; class FileContainer extends PEAR { var $file = ''; var $contents = ''; var $modified = 0; function FileContainer($file) { $this->PEAR(); // ez meghívja a szülõ osztály konstruktorát $fp = fopen($file, "r"); if (!is_resource($fp)) { return; } $this->file = $file; while ($data = fread($fp, 2048)) { $this->contents .= $data; } fclose($fp); } function append($str) { $this->contents .= $str; $this->modified++; } // A "destruktor" neve ugyanaz mint a konstruktoré, // de egy hangosköz vezeti be. function _FileContainer() { if ($this->modified) { $fp = fopen($this->file, "w"); if (!is_resource($fp)) { return; } fwrite($fp, $this->contents); fclose($fp); } } } $fileobj =&amp; new FileContainer("testfile"); $fileobj->append("ez bekerül a fájl végére\n"); // Amikor a kérés lefutott és a PHP leállna, a $fileobj // "destruktora" meghívásra kerül és felülírja a fájlt a lemezen. </programlisting> </example> <note> <simpara> A PEAR "destruktorai" a PHP leállási callback-jeit használják (<function>register_shutdown_function</function>). PHP &lt; 4.1 -ben nem írhatunk a kimenetre belõlük ha webszerveren futtatjuk a kódot. Bármi, ami a "destruktor"-ban kiírásra kerül, elveszik, kivéve, ha a PHP-t parancssori módban használjuk (CLI). PHP 4.1-ben és afölött már a destruktor is generálhat kimenetet. </simpara> <simpara> Ezen kívül lásd a <link linkend="destructors.warning">figyelmeztetést</link> arról, hogy hogyan kell létrehozni az objektumokat amennyiben használni szeretnénk a konstruktorukat. </simpara> </note> </para> <simpara> A következõ példák illusztrálják a PEAR hibakezelési mechanizmusának különbözõ lehetséges módjait. </simpara> <para> <example id="example.error1"> <title>"PEAR error" példa (1)</title> <programlisting role="php"> function mysockopen($host = "localhost", $port = 8090) { $fp = fsockopen($host, $port, $errno, $errstr); if (!is_resource($fp)) { return new PEAR_Error($errstr, $errno); } return $fp; } $sock = mysockopen(); if (PEAR::isError($sock)) { print "mysockopen hiba: ".$sock->getMessage()."&lt;BR>\n" } </programlisting> </example> </para> <simpara> Ez a példa egy wrapper az <function>fsockopen</function> függvényhez, amely az fsockopen által visszaadott hibakód és hibaüzenetet "csomagolja be" egy PEAR hibaobjektumba. Figyeljük meg, hogy a <function>PEAR::isError</function> függvényt használjuk annak vizsgálatára, hogy az objektum egy PEAR hibaobjektum-e. </simpara> <simpara> A PEAR_Error mûködési módja ebben a példában egyszerûen a hibaobjektum visszaadása, a többi a felhasználóra (fejlesztõ) marad. Ez az alapértelmezett mód. </simpara> <simpara> A következõ példákban bemutatjuk, hogyan használjuk az alapértelmezett módokat: </simpara> <para> <example id="example.error2"> <title>"PEAR error" példa (2)</title> <programlisting role="php"> class TCP_Socket extends PEAR { var $sock; function TCP_Socket() { $this->PEAR(); } function connect($host, $port) { $sock = fsockopen($host, $port, $errno, $errstr); if (!is_resource($sock)) { return $this->raiseError($errstr, $errno); } } } $sock = new TCP_Socket; $sock->setErrorHandling(PEAR_ERROR_DIE); $sock->connect("localhost", 8090); print "nem állt le a futás, sikeres a csatlakozás&lt;BR>\n"; </programlisting> </example> </para> <simpara> Itt elõször beállítjuk az alapértelmezet módot a <constant> PEAR_ERROR_DIE</constant>-ra, és mivel nem adunk meg semmilyen egyéb módot a raiseError hívásban (harmadik paraméterként), ezért a raiseError az alapértelmezett hibamódot alkalmazza és megállítja a szkript futását, ha az fsockopen hibával tér vissza. </simpara> </refsect1> <refsect1> <title>Felhasznált globális változók</title> <para> A PEAR osztály néhány globális változót használ a globális alapértelmezések és egy objektumlista tárolására (utóbbit a destruktorok kezeléséhez). Minden globális változó amely a PEAR osztállyal áll kapcsolatban, a <literal>_PEAR_</literal> prefixet kapta. </para> <para> <variablelist> <varlistentry> <term>$_PEAR_default_error_mode</term> <listitem> <simpara> Ha nincs alapértelmezett mód beállítva egy objektumon belül, ez a mód lesz érvényes. A következõ konstansok egyikének kell lennie: <constant>PEAR_ERROR_RETURN</constant>, <constant>PEAR_ERROR_PRINT</constant>, <constant>PEAR_ERROR_TRIGGER</constant>, <constant>PEAR_ERROR_DIE</constant> or <constant>PEAR_ERROR_CALLBACK</constant>. </simpara> <para> Ne állítsuk ezt a változót közvetlenül, hívjuk helyette a <function>PEAR::setErrorHandling</function> metódust statikusan, a következõképpen: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_DIE); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_options</term> <listitem> <simpara> Ha a hibamód <constant>PEAR_ERROR_TRIGGER</constant>, ez a kiváltandó hiba szintje (lehetséges értékei <constant>E_USER_NOTICE</constant>, <constant>E_USER_WARNING</constant> vagy <constant>E_USER_ERROR</constant>). </simpara> <para> Ne állítsuk a változó értékét közvetlenül, hívjuk helyette a <function>PEAR::setErrorHandling</function> metódust statikusan, a következõképpen: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_TRIGGER, E_USER_ERROR); </programlisting> </informalexample> </para> </listitem> </varlistentry> <varlistentry> <term>$_PEAR_default_error_callback</term> <listitem> <simpara> Ha nem használjuk az <replaceable>options</replaceable> paramétert hiba kiváltásakor és a hibamód <constant>PEAR_ERROR_CALLBACK</constant>, akkor ennek a változónak az értéke lesz callback-ként használatos. Ez azt jelenti, hogy ideiglenesen megváltoztathatjuk a hibamódot, és visszatérhetünk callback módra anélkül, hogy a függvényt újból meg kellene neveznünk. Sztring típusú érték egy függvényt jelképez, kétdimenziós tömb egy objektummal (0-s index) és egy sztringgel (1-es index) egy objektum egy metódusát. </simpara> <para> Ismét, ne állítsuk a változó értékét közvetlenül, hívjuk a <function>PEAR::setErrorHandling</function> metódust statikusan, a következõképpen: <informalexample> <programlisting role="php"> PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, "sajat_hibakezelo_fuggveny"); </programlisting> </informalexample> </para> <para> A következõ példa szemlélteti, hogyan kapcsolgathatunk oda-vissza a callback függvény újbóli megadása nélkül: <informalexample> <programlisting role="php"> PEAR::setErrorMode(PEAR_ERROR_CALLBACK, "sajat_hibakezelo_fuggveny"); csinalj_valamit(); PEAR::setErrorMode(PEAR_ERROR_DIE); csinalj_valami_kritikus_dolgot(); PEAR::setErrorMode(PEAR_ERROR_CALLBACK); // a továbbiakban hiba esetén ismét a sajat_hibakezelo_fuggveny kerül majd meghívásra </programlisting> </informalexample> </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t sgml-parent-document:nil sgml-default-dtd-file:"../../../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->
« previous php.pear.doc (#3979) next »