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