cvs: phpdoc-fa /language exceptions.xml

From: Date: Tue, 24 Jun 2008 17:27:40 +0000
Subject: cvs: phpdoc-fa /language exceptions.xml
Groups: php.doc.fa 
Request: Send a blank email to doc-fa+get-25@lists.php.net to get a copy of this message
psalehpoor Tue Jun 24 17:27:40 2008 UTC Added files: /phpdoc-fa/language exceptions.xml Log: translation to persian

http://cvs.php.net/viewvc.cgi/phpdoc-fa/language/exceptions.xml?view=markup&rev=1.1 Index: phpdoc-fa/language/exceptions.xml +++ phpdoc-fa/language/exceptions.xml <?xml version="1.0" encoding="utf-8"?> <!-- EN-Revision: 1.6 Maintainer: pedram Status: ready --> <!-- $Revision: 1.1 $ --> <chapter xml:id="language.exceptions" xmlns="http://docbook.org/ns/docbook"> <title>Exceptions</title> <para> PHP 5 یک مدل استثنا مشابه زبان‌های برنامه‌نویسی دیگر دارد. یک استثنا می‌تواند <literal>throw</literal> شود و توسط ("<literal>catch</literal>") در PHP گرفته شود. کد میان علامت بلوک <literal>try</literal> استثناهای محتمل را کنترل می‌نماید. هر <literal>try</literal> باید حداقل یک بلوک <literal>catch</literal> مرتبط داشته باشد. بلوک‌های <literal>catch</literal> چندگانه برای گرفتن کلاس استثناهای مختلف بکار می‌رود. اجرای معمولی (بدون استثنای ایجاد شده در بلوک <literal>try</literal> یا زمان انطباق <literal>catch</literal> که catch متناسب وجود ندارد) پس از آخرین بلوک catch ادامه خواهد یافت.استثناها می‌توانند <literal>throw</literal> پرتاب شوند(یا دوباره پرتاب شوند) در یک بلوک <literal>catch</literal> گرفته خواهد شد. </para> <para> وقتی یک استثنا پرتاب می‌شود کد بلافاصله پس از جمله اجرا نخواهد گردید و PHP تلاش خواهد نمود تا اولین انطباق <literal>catch</literal> را بیابد. اگر یک استثنا گرفته نشود خطای مرگبار PHP ایجاد خواهد شدکه پیام "<literal>Uncaught Exception ...</literal>" را نمایش می‌دهد مگر این که پردازشگر توسط <function>set_exception_handler</function> تعیین شده باشد. </para> <example> <title>پرتاب استثنا</title> <programlisting role="php"> <![CDATA[ <?php function inverse($x) { if (!$x) { throw new Exception('Division by zero.'); } else return 1/$x; } try { echo inverse(5) . "\n"; echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } // Continue execution echo 'Hello World'; ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ 0.2 Caught exception: Division by zero. Hello World ]]> </screen> </example> <example> <title>استثنا تودرتو</title> <programlisting role="php"> <![CDATA[ <?php class MyException extends Exception { } class Test { public function testing() { try { try { throw new MyException('foo!'); } catch (MyException $e) { /* rethrow it */ throw $e; } } catch (Exception $e) { var_dump($e->getMessage()); } } } $foo = new Test; $foo->testing(); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ string(4) "foo!" ]]> </screen> </example> <sect1 xml:id="language.exceptions.extending"> <title>گسترش استثناها</title> <para> یک کلاس استثنای تعریف شده توسط کاربر می‌تواند با استفاده از گسترش یک کلاس استثنای داخلی انجام شود. اعضا و متدهای پایین نشان می‌دهد که چه‌چیزهایی در کلاس فرزند از کلاس پایه مشتق شده است. </para> <example> <title>The Built in Exception class</title> <programlisting role="php"> <![CDATA[ <?php class Exception { protected $message = 'Unknown exception'; // exception message protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception function __construct($message = null, $code = 0); final function getMessage(); // message of exception final function getCode(); // code of exception final function getFile(); // source filename final function getLine(); // source line final function getTrace(); // an array of the backtrace() final function getTraceAsString(); // formated string of trace /* Overrideable */ function __toString(); // formated string for display } ?> ]]> </programlisting> </example> <para> اگر یک کلاس کلاس استثناهای داخلی را گسترش داده و <link linkend="language.oop5.decon">سازنده</link> را دوباره تعریف نماید توصیه می‌گردد که <link linkend="language.oop5.paamayim-nekudotayim">parent::__construct()</link> را فراخوانی نماید. برای تضمین صحت انتصاب در همه داده‌های موجود این کار باید انجام شود. متد <link linkend="language.oop5.magic">__toString()</link> برای بازنویسی خروجی دلخواه زمانی که یک شی به عنوان رشته نمایش داده می‌شود استفاده خواهد شد. </para> <example> <title>گسترش کلاس استثنا</title> <programlisting role="php"> <![CDATA[ <?php /** * Define a custom exception class */ class MyException extends Exception { // Redefine the exception so message isn't optional public function __construct($message, $code = 0) { // some code // make sure everything is assigned properly parent::__construct($message, $code); } // custom string representation of object public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } public function customFunction() { echo "A Custom function for this type of exception\n"; } } /** * Create a class to test the exception */ class TestException { public $var; const THROW_NONE = 0; const THROW_CUSTOM = 1; const THROW_DEFAULT = 2; function __construct($avalue = self::THROW_NONE) { switch ($avalue) { case self::THROW_CUSTOM: // throw custom exception throw new MyException('1 is an invalid parameter', 5); break; case self::THROW_DEFAULT: // throw default one. throw new Exception('2 isnt allowed as a parameter', 6); break; default: // No exception, object will be created. $this->var = $avalue; break; } } } // Example 1 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (MyException $e) { // Will be caught echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // Skipped echo "Caught Default Exception\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 2 try { $o = new TestException(TestException::THROW_DEFAULT); } catch (MyException $e) { // Doesn't match this type echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // Will be caught echo "Caught Default Exception\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 3 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (Exception $e) { // Will be caught echo "Default Exception caught\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 4 try { $o = new TestException(); } catch (Exception $e) { // Skipped, no exception echo "Default Exception caught\n", $e; } // Continue execution var_dump($o); echo "\n\n"; ?> ]]> </programlisting> </example> </sect1> </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 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 -->
« previous php.doc.fa (#25) next »