LMPX.COM |
Home | Linux | Mysql | PHP | XML | ||
|
|
|||
From: Pedram Salehpoor Date: Tue Jun 24 11:27:40 2008 Subject: cvs: phpdoc-fa /language exceptions.xml
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
-->
| Navigate in group php.doc.fa at sever news.php.net | |
| Previous | Next |
| No Copyright You are free to use Anything |
Site Maintained by PHP Developer
Powered By PHP Consultants |