cvs: phpdoc-fa /language namespaces.xml
| From: | Pedram Salehpoor | Date: | Tue, 24 Jun 2008 17:28:12 +0000 |
| Subject: | cvs: phpdoc-fa /language namespaces.xml | ||
| Groups: | php.doc.fa | ||
| Request: | Send a blank email to doc-fa+get-28@lists.php.net to get a copy of this message | ||
psalehpoor Tue Jun 24 17:28:12 2008 UTC
Added files:
/phpdoc-fa/language namespaces.xml
Log:
translation to persian
http://cvs.php.net/viewvc.cgi/phpdoc-fa/language/namespaces.xml?view=markup&rev=1.1 Index: phpdoc-fa/language/namespaces.xml +++ phpdoc-fa/language/namespaces.xml <?xml version="1.0" encoding="UTF-8"?> <!-- EN-Revision: 1.4 Maintainer: pedram Status: ready --> <!-- $Revision: 1.1 $ --> <chapter xml:id="language.namespaces" xmlns="http://docbook.org/ns/docbook" version="1.1"> <title>ÙØ¶Ø§ÙØ§Û ÙØ§Ù </title> <sect1 xml:id="language.namespaces.rationale"> <title>Ù Ø±ÙØ± بر ÙØ¶Ø§ÙØ§Û ÙØ§Ù </title> <simpara> ÙØ¶Ø§ÙØ§Û ÙØ§Ù در PHP Ø¨Ø±Ø§Û ØÙ ٠شک٠تعداد Ø²ÛØ§Ø¯ ØªÙØ§Ø¨Ø¹ در کتابخاÙÙ PHP Ø§ÛØ¬Ø§Ø¯ شدÙâØ§ÙØ¯. در PHP ت٠ا٠تعرÛÙ Ú©ÙØ§Ø³âÙØ§ Ø¬ÙØ§ÙÛ ÙØ³ØªÙد. Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ ÙÙØªÛ ÛÚ© ÙÙÛØ³Ùد٠کتابخاÙ٠در ØªÙØ§Ø´ است تا ÛÚ© Ù Ø¬Ù ÙØ¹Ù API Ø¬Ø¯ÛØ¯ بÙÙÛØ³Ø¯ Ø¨Ø§ÛØ¯ Ø¯ÙØª ÙÙ Ø§ÛØ¯ Ú©Ù ÙØ§Ù ØªÙØ§Ø¨Ø¹ دÛگر را Ø¨Ø±Ø§Û Ø®ÙØ¯ Ø§ÙØªØ®Ø§Ø¨ ÙÙÙ Ø§ÛØ¯ Ù Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ Ø§Ø³Ø§Ù Û Ù ÙØØµØ± Ø¨ÙØ±Ø¯ در اÛ٠کتابخاÙÙâÙØ§ Ø¨ØªÙØ§ÙÙØ¯ ب٠Ù٠را٠ÛکدÛگر ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÙØ¯. ٠ع٠ÙÙØ§ با ÙØ§Ù Ú©ÙØ§Ø³ Ù¾ÛØ´ÙÙØ¯Û با Ø±Ø´ØªÙ Ù ÙØØµØ± Ø¨ÙØ±Ø¯ - ب٠عÙÙØ§Ù ÙÙ ÙÙÙ Ú©ÙØ§Ø³âÙØ§Û پاÛÚ¯Ø§Ù Ø¯Ø§Ø¯Ù Ù¾ÛØ´ÙÙØ¯ <classname>My_Library_DB</classname> Ø®ÙØ§ÙÙØ¯ Ú¯Ø±ÙØª Ù ØºÛØ±Ù. ÙÙ Ø§ÙØ·Ùر ک٠کتابخاÙ٠گسترش Ù ÛâÛØ§Ø¨Ø¯ Ù¾ÛØ´ÙÙØ¯Ùا ب٠آÙÙØ§ اضاÙÙ Ø®ÙØ§Ùد شد تا Ù ÙØØµØ± Ø¨ÙØ± باÙÛ Ø¨Ù Ø§ÙÙØ¯. </simpara> <simpara> ÙØ¶Ø§Û ÙØ§Ù Ø¨Ù Ø¨Ù Ø¨Ø±ÙØ§Ù ÙâÙÙÛØ³ اجاز٠٠ÛâØ¯ÙØ¯ تا ØÙØ²Ù ÙØ§Ù âÙØ§ را Ù Ø¯ÛØ±Ûت ÙÙ Ø§ÛØ¯ ٠بدÙÙ Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù âÙØ§Û بÙÙØ¯ اÛÙ Ù ÙØ¶Ùع ٠٠ک٠گردد Ù Ù Ø´Ú©Ù ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ Ø±Ø§ بدÙÙ ÙØ§Ø®ÙØ§ÙØ§ کرد٠کد ØÙ ÙÙ Ø§ÛØ¯. </simpara> <simpara> ÙØ¶Ø§Û ÙØ§Ù در PHP پس از PHP 5.3.0 ÙØ±Ø§Ù٠شد٠است. اÛ٠بخش Ø¢Ø²Ù Ø§ÛØ´Û است ٠٠٠ک٠است تغÛÛØ± ÛØ§Ø¨Ø¯. </simpara> </sect1> <sect1 xml:id="language.namespaces.definition"> <title>تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù </title> <para> ÙØ¶Ø§Û ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از Ú©ÙÙ Ù Ú©ÙÛØ¯Û <literal>namespace</literal> در Ø§Ø¨ØªØ¯Ø§Û ÙØ§Û٠تعرÛÙ Ø´ÙØ¯. ÙÙ ÙÙÙ: <example> <title>تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù </title> <programlisting role="php"> <![CDATA[ <?php namespace MyProject::DB; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?> ]]> </programlisting> </example> ÚÙØ¯ ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù را Ù ÛâØªÙØ§Ù در ÚÙØ¯ÛÙ ÙØ§ÛÙ Ø§Ø³ØªÙØ§Ø¯Ù کرد. </para> <para> ÙØ¶Ø§Û ÙØ§Ù Ú©ÙØ§Ø³ ثابت ٠تعرÛ٠تابع را دارد ا٠ا کد آزاد ÙØ¯Ø§Ø±Ø¯. </para> <para> تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù Ø¨ØµÙØ±Øª Ø²ÛØ± ع٠٠٠ÛâÙÙ Ø§ÛØ¯: <itemizedlist> <listitem> <simpara> در ÙØ¶Ø§Û ÙØ§Ù ØªÙ Ø§Ù Ø§Ø³Ø§Ù Û ØªÙ Ø§Ù Ú©ÙØ§Ø³âÙØ§ تابع ٠ثابتâÙØ§ در تعرÛ٠آÙÙØ§ Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± Ù¾ÛØ´ÙÙØ¯ ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù را Ø¯Ø±ÛØ§Ùت Ù ÛâÚ©ÙÙØ¯. ÙØ§Ù Ú©ÙØ§Ø³ ÙÙ ÛØ´Ù ÙØ§Ù کا٠٠٠اÙÙØ¯ ÙØ§Ù Ú©ÙØ§Ø³ Ø¨Ø§ÙØ§ <classname>MyProject::DB::Connection</classname> است. </simpara> </listitem> <listitem> <simpara> تعرÛÙâÙØ§Û ثابت تعرÛ٠ساخت٠است ک٠از ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù Ù ÙØ§Ù ثابت تشکÛ٠شد٠است. ٠اÙÙØ¯ ثابتâÙØ§Û Ú©ÙØ§Ø³ ثابت ÙØ¶Ø§Û ÙØ§Ù تÙÙØ§ Ù ÙØ§Ø¯Ûر ثابت در Ø®ÙØ¯ ÙÚ¯Ù Ù ÛâØ¯Ø§Ø±Ø¯. </simpara> </listitem> <listitem> <para> ÙØ§Ù Ú©ÙØ§Ø³ تعرÛÙ ÙØ´Ø¯Ù (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ Ø§Ø³Ø§Ù Û ØºÛØ± شا٠٠<literal>::</literal>) در ز٠ا٠اجرا با Ø§Ø³ØªÙØ§Ø¯Ù از رÙÛÙ Ø²ÛØ± Ø§ÙØ¬Ø§Ù Ù ÛØ°Ø´Ùد: <orderedlist> <listitem> <simpara> Ú©ÙØ§Ø³ در Ø¯Ø§Ø®Ù ÙØ¶Ø§Û ÙØ§Ù بدÙÙ (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ Ù¾ÛØ´ÙÙØ¯ ÙÙ ÙØ¯Ù ÙØ§Ù با ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ) ØªÙØ§Ø´ Ø¨Ø±Ø§Û <link linkend="language.oop5.autoload">autoload</link> جستج٠٠Ûâگردد. </simpara> </listitem> <listitem> <simpara> Ú©ÙØ§Ø³ در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¨Ø¯ÙÙ ØªÙØ§Ø´ Ø¨Ø±Ø§Û Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø¬Ø³ØªØ¬Ù Ù Ûâگردد. </simpara> </listitem> <listitem> <simpara> Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø®ÙØ¯Ú©Ø§Ø± Ø¨Ø±Ø§Û ÙØ§Ù در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø§ÙØ¬Ø§Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara>اگر Ø§ÙØ¯Ø§Ù Ù¾ÛØ´Û٠شکست بخرد جستج٠ÙÛØ² شکست Ø®ÙØ±Ø¯Ù است.</simpara> </listitem> </orderedlist> </para> </listitem> <listitem> <para> ÙØ§Ù تابع تاÛÛØ¯ ÙØ´Ø¯Ù (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ ÙØ§Ù بدÙÙ <literal>::</literal>) در ز٠ا٠اجرا در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ø³Ù¾Ø³ در ØÙØ²Ù Ø¬ÙØ§ÙÛ Ø¬Ø³ØªØ¬Ù Ø®ÙØ§Ùد شد. </para> </listitem> <listitem> <para> ÙØ§Ù ثابت تاÛÛØ¯ ÙØ´Ø¯Ù در ز٠ا٠اجرا در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ø³Ù¾Ø³ در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¬Ø³ØªØ¬Ù Ø®ÙØ§Ùد شد. </para> </listitem> </itemizedlist> <link linkend="language.namespaces.rules">ÙÙØ§ÙÛ٠تØÙÛÙ ÙØ§Ù </link> را ببÛÙÛØ¯. </para> </sect1> <sect1 xml:id="language.namespaces.using"> <title>Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ¶Ø§Û ÙØ§Ù </title> <para> ÙØ± Ú©ÙØ§Ø³ ٠تابع در ÙØ¶Ø§Û ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù کا٠٠٠ÛâØªÙØ§Ùد Ø®ÙØ§ÙØ¯Ù Ø´ÙØ¯ Ø¨Ø±Ø§Û ÙÙ ÙÙÙ <classname>MyProject::DB::Connection</classname> ÛØ§ <classname>MyProject::DB::connect</classname>. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù دار</title> <programlisting role="php"> <![CDATA[ <?php require 'MyProject/Db/Connection.php'; $x = new MyProject::DB::Connection; MyProject::DB::connect(); ?> ]]> </programlisting> </example> </para> <para> ÙØ¶Ø§Û ÙØ§Ù Ù ÛâØªÙØ§Ùد Ø¯Ø§Ø®Ù Ù ØªÙ ÙØ¹ÙÛ (Ø¬ÙØ§ÙÛ ÙØ¶Ø§Û ÙØ§Ù ) با Ø§Ø³ØªÙØ§Ø¯Ù از ع٠Ùگر <literal>use</literal> ÙØ§Ø±Ø¯ Ø´ÙØ¯ Ø¯Ø³ØªÙØ± ع٠Ùگر ب٠اÛÙ ØµÙØ±Øª است: <informalexample> <programlisting role="php"> <![CDATA[ <?php /* ... */ use Some::Name as Othername; // The simplified form of use: use Foo::Bar; // which is the same as : use Foo::Bar as Bar; ?> ]]> </programlisting> </informalexample> ÙØ§Ù Ú¯Ø±ÙØªÙ Ø´Ø¯Ù Ø¨ØµÙØ±Øª Ø²ÛØ± Ø¹Ù Ù Ø®ÙØ§Ùد کرد: ÙØ± بار کا٠پاÛÙØ± در برابر ÙØ§Ù Ù ØÙÛ <literal>Othername</literal> ÙØ±Ø§Ø± Ù ÛâÚ¯ÛØ±Ø¯ (ب٠عÙÙØ§Ù ÙØ§Ù تÙÙØ§ ÛØ§Ûا Ù¾ÛØ´ÙÙØ¯ ÛÚ© ÙØ§Ù بÙÙØ¯ØªØ± <literal>::</literal>) ÙØ§Ù <literal>Some::Name</literal> در Ø¬Ø§Û Ø¢Ù Ø¬Ø§ÛگزÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯. </para> <para> <literal>use</literal> تÙÙØ§ در ØÙØ²Ù Ø¬ÙØ§ÙÛ ÙØ§Ø¨Ù Ø§Ø³ØªÙØ§Ø¯Ù است Ù Ù٠در داخ٠تابع ÛØ§ Ú©ÙØ§Ø³. ÙØ§Ù âÙØ§ ÙØ§Ø±Ø¯ شد٠از ÙÙØ·Ù ÙØ±Ùد ب٠بعد تا Ù¾Ø§ÛØ§Ù ÙØ§ÛÙ ÙØ¹ÙÛ ØªØ§Ø«ÛØ± Ø¯Ø§Ø±ÙØ¯. ØªÙØµÛÙ Ù Ûâگردد ÙØ±Ùد در Ø§Ø¨ØªØ¯Ø§Û ÙØ§Û٠باشد تا از گ٠راÙÛ Ø®ÙØ¯Ø¯Ø§Ø±Û ÙÙ Ø§ÛØ¯. </para> <para> <example> <title>ÙØ§Ø±Ø¯ ÙÙ ÙØ¯Ù ÙØ¯Ø³ØªØ±Ø³Û Ø¨Ù ÙØ¶Ø§Û ÙØ§Ù </title> <programlisting role="php"> <![CDATA[ <?php require 'MyProject/Db/Connection.php'; use MyProject::DB; use MyProject::DB::Connection as DbConnection; $x = new MyProject::DB::Connection(); $y = new DB::connection(); $z = new DbConnection(); DB::connect(); ?> ]]> </programlisting> </example> </para> <para> <note> <simpara> ع٠ÙÛØ§Øª ÙØ±Ùد در ز٠ا٠کا٠پاÛÙ Ø§ÙØ¬Ø§Ù Ù ÛâØ´ÙØ¯ Ù ØªÙ Ø§Ù ÙØ§Ù âÙØ§Û Ù ØÙÛ Ø¨Ù ÙØ§Ù کا٠٠آÙÙØ§ ØªÙØ³Ø· کا٠پاÛÙØ± تبدÛÙ Ø®ÙØ§ÙÙØ¯ شد. ØªÙØ¬Ù Ú©ÙÛØ¯ Ú©Ù ÙØ§Ù âÙØ§Û درÙ٠رشتÙâÙØ§ ØªØ±Ø¬Ù Ù ÙØ®ÙاÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯ Ù callback براساس اÛÙ ÙÙØ§ÙÛÙ Ø¹Ù Ù ÙØ®ÙØ§ÙØ¯ کرد </simpara> </note> </para> </sect1> <sect1 xml:id="language.namespaces.global"> <title>ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ</title> <para> بدÙ٠تعرÛÙ ÙÛÚ ÙØ¶Ø§Û ÙØ§Ù ت٠ا٠تعرÛÙâÙØ§Û تابع Ù Ú©ÙØ§Ø³ در ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ ÙØ±Ø§Ø± Ø®ÙØ§ÙÙØ¯ Ú¯Ø±ÙØª ÙÙ Ø§ÙØ·Ùر Ú©Ù Ù¾ÛØ´ از اÛ٠در PHP ع٠٠٠ÛâØ´Ø¯Ù Ø§Ø³Øª.ÙØ±Ø§Ø± Ø¯Ø§Ø¯Ù Ù¾ÛØ´ÙÙØ¯ Ø¨Ù ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از <literal>::</literal> ÙØ§Ù Ù ÙØ±Ø¯ ÙÛØ§Ø² Ø¨Ø±Ø§Û ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ Ø±Ø§ در Ù ØªÙ ÙØ¶Ø§Û ÙØ§Ù Ø¶Ø±ÙØ±Û Ø®ÙØ§Ùد ساخت. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از تعرÛÙ ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ</title> <programlisting role="php"> <![CDATA[ <?php namespace A::B::C; /* This function is A::B::C::fopen */ function fopen() { /* ... */ $f = ::fopen(...); // call global fopen return $f; } ?> ]]> </programlisting> </example> </para> </sect1> <sect1 xml:id="language.namespaces.constant"> <title>__NAMESPACE__</title> <para> ثابت ز٠ا٠کا٠پاÛÙ <constant>__NAMESPACE__</constant> ØªÙØ³Ø· ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ ØªØ¹ÛÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯. Ø¨ÛØ±Ù٠از ÙØ¶Ø§Û ÙØ§Ù اÛ٠ثابت Ù ÙØ¯Ø§Ø± رشت٠خاÙÛ Ø±Ø§ Ø®ÙØ§Ùد داشت. اÛ٠ثابت Ø¨Ù Ø®ØµÙØµ Ø¨Ø±Ø§Û ÙÙØ´ØªÙ ÙØ§Ù Ú©Ø§Ù Ù ÙØ§Ù âÙØ§Û ÙØ¶Ø§Û ÙØ§Ù Ù ØÙÛ Ù ÙØ± دÛÙØ§Ø² است. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از __NAMESPACE__</title> <programlisting role="php"> <![CDATA[ <?php namespace A::B::C; function foo() { // do stuff } set_error_handler(__NAMESPACE__ . "::foo"); ?> ]]> </programlisting> </example> </para> </sect1> <sect1 xml:id="language.namespaces.rules"> <title>ÙÙØ§ÙÛ٠تØÙÛÙ ÙØ§Ù </title> <para> ÙØ§Ù âÙØ§ با Ø§Ø³ØªÙØ§Ø¯Ù از ÙÙØ§ÙÛÙ Ø²ÛØ± Ù ÙØ±Ø¯ تØÙÛÙ ÙØ±Ø§Ø± Ù ÛâÚ¯ÛØ±Ùد. <orderedlist> <listitem> <simpara> ÙØ§Ù âÙØ§Û تاÛÛØ¯ شد٠در Ø·Ù٠کا٠پاÛ٠با ØªÙØ¬Ù ب٠ÙÙØ§ÙÛ٠کا٠پاÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. Ø¨Ø±Ø§Û ÙÙ ÙÙ٠اگر ÙØ¶Ø§Û ÙØ§Ù A::B::C ÙØ§Ø±Ø¯ شد٠باشد ÛÚ© ÙØ±Ø§Ø®ÙاÙÛ Ø¨Ø±Ø§Û <code>C::D::e()</code> ب٠<code>A::B::C::D::e()</code> ØªØ±Ø¬Ù Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> ÙØ§Ù Ú©ÙØ§Ø³ تاÛÛØ¯ ÙØ´Ø¯Ù در Ø·Ù٠کا٠پاÛ٠با ØªÙØ¬Ù ب٠ÙÙØ§ÙÛÙ ÙØ±Ùد (جاÛگزÛÙÛ ÙØ§Ù Ú©ÙØªØ§Ù با ÙØ§Ù کا٠Ù) ØªØ±Ø¬Ù Ù Ø®ÙØ§ÙÙØ¯ شد. Ø¨Ø±Ø§Û ÙÙ ÙÙ٠اگر ÙØ¶Ø§Û ÙØ§Ù <literal>A::B::C</literal> ÙØ§Ø±Ø¯ شد٠باشد <code>new C()</code> ب٠<code>new A::B::C()</code> ØªØ±Ø¬Ù Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> در داخ٠ÛÚ© ÙØ¶Ø§Û ÙØ§Ù ÙØ±Ø§Ø®ÙاÙÛ ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù ک٠در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ ØªØ¹Ø±Û٠شدÙâØ§ÙØ¯ (در Ø²Ù Ø§Ù ÙØ±Ø§Ø®ÙاÙÛ Ø´ÙØ§Ø®ØªÙ شدÙâØ§ÙØ¯) ب٠عÙÙØ§Ù ÙØ±Ø§Ø®ÙاÙÛ Ø§ÛÙ ÙØ¶Ø§Û ÙØ§Ù âÙØ§ در ز٠ا٠کا٠پاÛÙ ØªÙØ³Ûر Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. </simpara> </listitem> <listitem> <simpara> در Ø¯Ø§Ø®Ù ÙØ¶Ø§Û ÙØ§Ù (ÙØ±Ø¶ Ú©ÙÛØ¯ A::B) Ø¨Ù ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø¯Ø± ز٠ا٠اجرا تØÙÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. در اÛÙØ¬Ø§ ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ ØªØ§Ø¨Ø¹ <literal>foo()</literal> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© تابع در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ûâگردد: <literal>A::B::foo()</literal>. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ù ÛâÙÙ Ø§ÛØ¯ تا تابع <emphasis>internal</emphasis> را ÛØ§Ùت٠٠<literal>foo()</literal> را اجرا ÙÙ Ø§ÛØ¯. </simpara> </listitem> </orderedlist> <simpara> Ø¨Ø±Ø§Û ÙØ±Ø§Ø®ÙاÙÛ ÛÚ© تابع تعرÛÙ Ø´Ø¯Ù ØªÙØ³Ø· کاربر در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ <literal>::foo()</literal> Ø§Ø³ØªÙØ§Ø¯Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> در ÛÚ© ÙØ¶Ø§Û ÙØ§Ù (ÙØ±Ø¶ Ú©ÙÛØ¯ <literal>A::B</literal>) ÙØ§Ù Ú©ÙØ§Ø³ تاÛÛØ¯ ÙØ´Ø¯Ù را در ز٠ا٠اجرا تØÙÛÙ Ù ÛâÙÙ Ø§ÛØ¯. در اÛÙØ¬Ø§ ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ <code>new C()</code> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© Ú©ÙØ§Ø³ از ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø®ÙØ§Ùد گشت: <literal>A::B::C</literal>. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ø®ÙØ§Ùد کرد Ú©Ù Ú©ÙØ§Ø³ <emphasis>internal</emphasis> را ÛØ§Ùت٠٠<literal>C</literal> را اجرا ÙÙ Ø§ÛØ¯. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ø®ÙØ§Ùد کرد Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± <literal>A::B::C</literal> را Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û ÙÙ Ø§ÛØ¯. </simpara> </listitem> </orderedlist> <simpara> Ø¨Ø±Ø§Û Ø§Ø±Ø¬Ø§Ø¹ ب٠ÛÚ© Ú©ÙØ§Ø³ تعرÛÙ Ø´Ø¯Ù ØªÙØ³Ø· کاربر در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¨Ø§ÛØ¯ از <code>new ::C()</code> Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯. </simpara> </listitem> <listitem> <simpara> ÙØ±Ø§Ø®ÙاÙÛ ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù در ز٠ا٠اجرا تØÙÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. در اÛ٠جا ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ <literal>A::B::foo()</literal> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù تابع <literal>foo()</literal> در ÙØ¶Ø§Û ÙØ§Ù <literal>A::B</literal> Ø®ÙØ§ÙÙØ¯ گشت. </simpara> </listitem> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© Ú©ÙØ§Ø³ <literal>A::B</literal> گشت٠٠٠تد استاتÛÚ© <literal>foo()</literal> را ÙØ±Ø§ Ø®ÙØ§Ùد Ø®ÙØ§Ùد. اگر Ù ÙØ±Ø¯ ÙÛØ§Ø² باشد Ú©ÙØ§Ø³ Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø®ÙØ§Ùد شد. </simpara> </listitem> </orderedlist> </listitem> <listitem> <simpara> Ú©ÙØ§Ø³ تاÛÛØ¯ شد٠در ز٠ا٠کا٠پاÛ٠تØÙÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯ Ø¨Ø±Ø§Û ÙÙ ÙÙÙ <code>new A::B::C()</code> Ø¨Ù Ú©ÙØ§Ø³ <classname>C</classname> از ÙØ¶Ø§Û ÙØ§Ù <literal>A::B</literal> Ø§Ø´Ø§Ø±Ù Ø®ÙØ§Ùد کرد. </simpara> </listitem> </orderedlist> </para> <example> <title>تØÙÛÙ ÙØ§Ù ÙØ´Ø§Ù داد٠شد٠است</title> <programlisting role="php"> <![CDATA[ <?php namespace A; // function calls foo(); // first tries to call "foo" defined in namespace "A" // then calls internal function "foo" ::foo(); // calls function "foo" defined in global scope // class references new B(); // first tries to create object of class "B" defined in namespace "A" // then creates object of internal class "B" new ::B(); // creates object of class "B" defined in global scope // static methods/namespace functions from another namespace B::foo(); // first tries to call function "foo" from namespace "A::B" // then calls method "foo" of internal class "B" ::B::foo(); // first tries to call function "foo" from namespace "B" // then calls method "foo" of class "B" from global scope // static methods/namespace functions of current namespace A::foo(); // first tries to call function "foo" from namespace "A::A" // then tries to call method "foo" of class "A" from namespace "A" // then tries to call function "foo" from namespace "A" // then calls method "foo" of internal class "A" ::A::foo(); // first tries to call function "foo" from namespace "A" // then calls method "foo" of class "A" from global scope ?> ]]> </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 -->
http://cvs.php.net/viewvc.cgi/phpdoc-fa/language/namespaces.xml?view=markup&rev=1.1 Index: phpdoc-fa/language/namespaces.xml +++ phpdoc-fa/language/namespaces.xml <?xml version="1.0" encoding="UTF-8"?> <!-- EN-Revision: 1.4 Maintainer: pedram Status: ready --> <!-- $Revision: 1.1 $ --> <chapter xml:id="language.namespaces" xmlns="http://docbook.org/ns/docbook" version="1.1"> <title>ÙØ¶Ø§ÙØ§Û ÙØ§Ù </title> <sect1 xml:id="language.namespaces.rationale"> <title>Ù Ø±ÙØ± بر ÙØ¶Ø§ÙØ§Û ÙØ§Ù </title> <simpara> ÙØ¶Ø§ÙØ§Û ÙØ§Ù در PHP Ø¨Ø±Ø§Û ØÙ ٠شک٠تعداد Ø²ÛØ§Ø¯ ØªÙØ§Ø¨Ø¹ در کتابخاÙÙ PHP Ø§ÛØ¬Ø§Ø¯ شدÙâØ§ÙØ¯. در PHP ت٠ا٠تعرÛÙ Ú©ÙØ§Ø³âÙØ§ Ø¬ÙØ§ÙÛ ÙØ³ØªÙد. Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ ÙÙØªÛ ÛÚ© ÙÙÛØ³Ùد٠کتابخاÙ٠در ØªÙØ§Ø´ است تا ÛÚ© Ù Ø¬Ù ÙØ¹Ù API Ø¬Ø¯ÛØ¯ بÙÙÛØ³Ø¯ Ø¨Ø§ÛØ¯ Ø¯ÙØª ÙÙ Ø§ÛØ¯ Ú©Ù ÙØ§Ù ØªÙØ§Ø¨Ø¹ دÛگر را Ø¨Ø±Ø§Û Ø®ÙØ¯ Ø§ÙØªØ®Ø§Ø¨ ÙÙÙ Ø§ÛØ¯ Ù Ø¨ÙØ§Ø¨Ø±Ø§ÛÙ Ø§Ø³Ø§Ù Û Ù ÙØØµØ± Ø¨ÙØ±Ø¯ در اÛ٠کتابخاÙÙâÙØ§ Ø¨ØªÙØ§ÙÙØ¯ ب٠Ù٠را٠ÛکدÛگر ÙØ¬Ùد Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÙØ¯. ٠ع٠ÙÙØ§ با ÙØ§Ù Ú©ÙØ§Ø³ Ù¾ÛØ´ÙÙØ¯Û با Ø±Ø´ØªÙ Ù ÙØØµØ± Ø¨ÙØ±Ø¯ - ب٠عÙÙØ§Ù ÙÙ ÙÙÙ Ú©ÙØ§Ø³âÙØ§Û پاÛÚ¯Ø§Ù Ø¯Ø§Ø¯Ù Ù¾ÛØ´ÙÙØ¯ <classname>My_Library_DB</classname> Ø®ÙØ§ÙÙØ¯ Ú¯Ø±ÙØª Ù ØºÛØ±Ù. ÙÙ Ø§ÙØ·Ùر ک٠کتابخاÙ٠گسترش Ù ÛâÛØ§Ø¨Ø¯ Ù¾ÛØ´ÙÙØ¯Ùا ب٠آÙÙØ§ اضاÙÙ Ø®ÙØ§Ùد شد تا Ù ÙØØµØ± Ø¨ÙØ± باÙÛ Ø¨Ù Ø§ÙÙØ¯. </simpara> <simpara> ÙØ¶Ø§Û ÙØ§Ù Ø¨Ù Ø¨Ù Ø¨Ø±ÙØ§Ù ÙâÙÙÛØ³ اجاز٠٠ÛâØ¯ÙØ¯ تا ØÙØ²Ù ÙØ§Ù âÙØ§ را Ù Ø¯ÛØ±Ûت ÙÙ Ø§ÛØ¯ ٠بدÙÙ Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù âÙØ§Û بÙÙØ¯ اÛÙ Ù ÙØ¶Ùع ٠٠ک٠گردد Ù Ù Ø´Ú©Ù ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ Ø±Ø§ بدÙÙ ÙØ§Ø®ÙØ§ÙØ§ کرد٠کد ØÙ ÙÙ Ø§ÛØ¯. </simpara> <simpara> ÙØ¶Ø§Û ÙØ§Ù در PHP پس از PHP 5.3.0 ÙØ±Ø§Ù٠شد٠است. اÛ٠بخش Ø¢Ø²Ù Ø§ÛØ´Û است ٠٠٠ک٠است تغÛÛØ± ÛØ§Ø¨Ø¯. </simpara> </sect1> <sect1 xml:id="language.namespaces.definition"> <title>تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù </title> <para> ÙØ¶Ø§Û ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از Ú©ÙÙ Ù Ú©ÙÛØ¯Û <literal>namespace</literal> در Ø§Ø¨ØªØ¯Ø§Û ÙØ§Û٠تعرÛÙ Ø´ÙØ¯. ÙÙ ÙÙÙ: <example> <title>تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù </title> <programlisting role="php"> <![CDATA[ <?php namespace MyProject::DB; const CONNECT_OK = 1; class Connection { /* ... */ } function connect() { /* ... */ } ?> ]]> </programlisting> </example> ÚÙØ¯ ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù را Ù ÛâØªÙØ§Ù در ÚÙØ¯ÛÙ ÙØ§ÛÙ Ø§Ø³ØªÙØ§Ø¯Ù کرد. </para> <para> ÙØ¶Ø§Û ÙØ§Ù Ú©ÙØ§Ø³ ثابت ٠تعرÛ٠تابع را دارد ا٠ا کد آزاد ÙØ¯Ø§Ø±Ø¯. </para> <para> تعرÛÙ ÙØ¶Ø§Û ÙØ§Ù Ø¨ØµÙØ±Øª Ø²ÛØ± ع٠٠٠ÛâÙÙ Ø§ÛØ¯: <itemizedlist> <listitem> <simpara> در ÙØ¶Ø§Û ÙØ§Ù ØªÙ Ø§Ù Ø§Ø³Ø§Ù Û ØªÙ Ø§Ù Ú©ÙØ§Ø³âÙØ§ تابع ٠ثابتâÙØ§ در تعرÛ٠آÙÙØ§ Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± Ù¾ÛØ´ÙÙØ¯ ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù را Ø¯Ø±ÛØ§Ùت Ù ÛâÚ©ÙÙØ¯. ÙØ§Ù Ú©ÙØ§Ø³ ÙÙ ÛØ´Ù ÙØ§Ù کا٠٠٠اÙÙØ¯ ÙØ§Ù Ú©ÙØ§Ø³ Ø¨Ø§ÙØ§ <classname>MyProject::DB::Connection</classname> است. </simpara> </listitem> <listitem> <simpara> تعرÛÙâÙØ§Û ثابت تعرÛ٠ساخت٠است ک٠از ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù Ù ÙØ§Ù ثابت تشکÛ٠شد٠است. ٠اÙÙØ¯ ثابتâÙØ§Û Ú©ÙØ§Ø³ ثابت ÙØ¶Ø§Û ÙØ§Ù تÙÙØ§ Ù ÙØ§Ø¯Ûر ثابت در Ø®ÙØ¯ ÙÚ¯Ù Ù ÛâØ¯Ø§Ø±Ø¯. </simpara> </listitem> <listitem> <para> ÙØ§Ù Ú©ÙØ§Ø³ تعرÛÙ ÙØ´Ø¯Ù (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ Ø§Ø³Ø§Ù Û ØºÛØ± شا٠٠<literal>::</literal>) در ز٠ا٠اجرا با Ø§Ø³ØªÙØ§Ø¯Ù از رÙÛÙ Ø²ÛØ± Ø§ÙØ¬Ø§Ù Ù ÛØ°Ø´Ùد: <orderedlist> <listitem> <simpara> Ú©ÙØ§Ø³ در Ø¯Ø§Ø®Ù ÙØ¶Ø§Û ÙØ§Ù بدÙÙ (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ Ù¾ÛØ´ÙÙØ¯ ÙÙ ÙØ¯Ù ÙØ§Ù با ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ) ØªÙØ§Ø´ Ø¨Ø±Ø§Û <link linkend="language.oop5.autoload">autoload</link> جستج٠٠Ûâگردد. </simpara> </listitem> <listitem> <simpara> Ú©ÙØ§Ø³ در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¨Ø¯ÙÙ ØªÙØ§Ø´ Ø¨Ø±Ø§Û Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø¬Ø³ØªØ¬Ù Ù Ûâگردد. </simpara> </listitem> <listitem> <simpara> Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø®ÙØ¯Ú©Ø§Ø± Ø¨Ø±Ø§Û ÙØ§Ù در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø§ÙØ¬Ø§Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara>اگر Ø§ÙØ¯Ø§Ù Ù¾ÛØ´Û٠شکست بخرد جستج٠ÙÛØ² شکست Ø®ÙØ±Ø¯Ù است.</simpara> </listitem> </orderedlist> </para> </listitem> <listitem> <para> ÙØ§Ù تابع تاÛÛØ¯ ÙØ´Ø¯Ù (Ø¨Ø±Ø§Û ÙÙ ÙÙÙ ÙØ§Ù بدÙÙ <literal>::</literal>) در ز٠ا٠اجرا در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ø³Ù¾Ø³ در ØÙØ²Ù Ø¬ÙØ§ÙÛ Ø¬Ø³ØªØ¬Ù Ø®ÙØ§Ùد شد. </para> </listitem> <listitem> <para> ÙØ§Ù ثابت تاÛÛØ¯ ÙØ´Ø¯Ù در ز٠ا٠اجرا در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ø³Ù¾Ø³ در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¬Ø³ØªØ¬Ù Ø®ÙØ§Ùد شد. </para> </listitem> </itemizedlist> <link linkend="language.namespaces.rules">ÙÙØ§ÙÛ٠تØÙÛÙ ÙØ§Ù </link> را ببÛÙÛØ¯. </para> </sect1> <sect1 xml:id="language.namespaces.using"> <title>Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ¶Ø§Û ÙØ§Ù </title> <para> ÙØ± Ú©ÙØ§Ø³ ٠تابع در ÙØ¶Ø§Û ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù کا٠٠٠ÛâØªÙØ§Ùد Ø®ÙØ§ÙØ¯Ù Ø´ÙØ¯ Ø¨Ø±Ø§Û ÙÙ ÙÙÙ <classname>MyProject::DB::Connection</classname> ÛØ§ <classname>MyProject::DB::connect</classname>. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù دار</title> <programlisting role="php"> <![CDATA[ <?php require 'MyProject/Db/Connection.php'; $x = new MyProject::DB::Connection; MyProject::DB::connect(); ?> ]]> </programlisting> </example> </para> <para> ÙØ¶Ø§Û ÙØ§Ù Ù ÛâØªÙØ§Ùد Ø¯Ø§Ø®Ù Ù ØªÙ ÙØ¹ÙÛ (Ø¬ÙØ§ÙÛ ÙØ¶Ø§Û ÙØ§Ù ) با Ø§Ø³ØªÙØ§Ø¯Ù از ع٠Ùگر <literal>use</literal> ÙØ§Ø±Ø¯ Ø´ÙØ¯ Ø¯Ø³ØªÙØ± ع٠Ùگر ب٠اÛÙ ØµÙØ±Øª است: <informalexample> <programlisting role="php"> <![CDATA[ <?php /* ... */ use Some::Name as Othername; // The simplified form of use: use Foo::Bar; // which is the same as : use Foo::Bar as Bar; ?> ]]> </programlisting> </informalexample> ÙØ§Ù Ú¯Ø±ÙØªÙ Ø´Ø¯Ù Ø¨ØµÙØ±Øª Ø²ÛØ± Ø¹Ù Ù Ø®ÙØ§Ùد کرد: ÙØ± بار کا٠پاÛÙØ± در برابر ÙØ§Ù Ù ØÙÛ <literal>Othername</literal> ÙØ±Ø§Ø± Ù ÛâÚ¯ÛØ±Ø¯ (ب٠عÙÙØ§Ù ÙØ§Ù تÙÙØ§ ÛØ§Ûا Ù¾ÛØ´ÙÙØ¯ ÛÚ© ÙØ§Ù بÙÙØ¯ØªØ± <literal>::</literal>) ÙØ§Ù <literal>Some::Name</literal> در Ø¬Ø§Û Ø¢Ù Ø¬Ø§ÛگزÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯. </para> <para> <literal>use</literal> تÙÙØ§ در ØÙØ²Ù Ø¬ÙØ§ÙÛ ÙØ§Ø¨Ù Ø§Ø³ØªÙØ§Ø¯Ù است Ù Ù٠در داخ٠تابع ÛØ§ Ú©ÙØ§Ø³. ÙØ§Ù âÙØ§ ÙØ§Ø±Ø¯ شد٠از ÙÙØ·Ù ÙØ±Ùد ب٠بعد تا Ù¾Ø§ÛØ§Ù ÙØ§ÛÙ ÙØ¹ÙÛ ØªØ§Ø«ÛØ± Ø¯Ø§Ø±ÙØ¯. ØªÙØµÛÙ Ù Ûâگردد ÙØ±Ùد در Ø§Ø¨ØªØ¯Ø§Û ÙØ§Û٠باشد تا از گ٠راÙÛ Ø®ÙØ¯Ø¯Ø§Ø±Û ÙÙ Ø§ÛØ¯. </para> <para> <example> <title>ÙØ§Ø±Ø¯ ÙÙ ÙØ¯Ù ÙØ¯Ø³ØªØ±Ø³Û Ø¨Ù ÙØ¶Ø§Û ÙØ§Ù </title> <programlisting role="php"> <![CDATA[ <?php require 'MyProject/Db/Connection.php'; use MyProject::DB; use MyProject::DB::Connection as DbConnection; $x = new MyProject::DB::Connection(); $y = new DB::connection(); $z = new DbConnection(); DB::connect(); ?> ]]> </programlisting> </example> </para> <para> <note> <simpara> ع٠ÙÛØ§Øª ÙØ±Ùد در ز٠ا٠کا٠پاÛÙ Ø§ÙØ¬Ø§Ù Ù ÛâØ´ÙØ¯ Ù ØªÙ Ø§Ù ÙØ§Ù âÙØ§Û Ù ØÙÛ Ø¨Ù ÙØ§Ù کا٠٠آÙÙØ§ ØªÙØ³Ø· کا٠پاÛÙØ± تبدÛÙ Ø®ÙØ§ÙÙØ¯ شد. ØªÙØ¬Ù Ú©ÙÛØ¯ Ú©Ù ÙØ§Ù âÙØ§Û درÙ٠رشتÙâÙØ§ ØªØ±Ø¬Ù Ù ÙØ®ÙاÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯ Ù callback براساس اÛÙ ÙÙØ§ÙÛÙ Ø¹Ù Ù ÙØ®ÙØ§ÙØ¯ کرد </simpara> </note> </para> </sect1> <sect1 xml:id="language.namespaces.global"> <title>ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ</title> <para> بدÙ٠تعرÛÙ ÙÛÚ ÙØ¶Ø§Û ÙØ§Ù ت٠ا٠تعرÛÙâÙØ§Û تابع Ù Ú©ÙØ§Ø³ در ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ ÙØ±Ø§Ø± Ø®ÙØ§ÙÙØ¯ Ú¯Ø±ÙØª ÙÙ Ø§ÙØ·Ùر Ú©Ù Ù¾ÛØ´ از اÛ٠در PHP ع٠٠٠ÛâØ´Ø¯Ù Ø§Ø³Øª.ÙØ±Ø§Ø± Ø¯Ø§Ø¯Ù Ù¾ÛØ´ÙÙØ¯ Ø¨Ù ÙØ§Ù با Ø§Ø³ØªÙØ§Ø¯Ù از <literal>::</literal> ÙØ§Ù Ù ÙØ±Ø¯ ÙÛØ§Ø² Ø¨Ø±Ø§Û ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ Ø±Ø§ در Ù ØªÙ ÙØ¶Ø§Û ÙØ§Ù Ø¶Ø±ÙØ±Û Ø®ÙØ§Ùد ساخت. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از تعرÛÙ ÙØ¶Ø§Û Ø¬ÙØ§ÙÛ</title> <programlisting role="php"> <![CDATA[ <?php namespace A::B::C; /* This function is A::B::C::fopen */ function fopen() { /* ... */ $f = ::fopen(...); // call global fopen return $f; } ?> ]]> </programlisting> </example> </para> </sect1> <sect1 xml:id="language.namespaces.constant"> <title>__NAMESPACE__</title> <para> ثابت ز٠ا٠کا٠پاÛÙ <constant>__NAMESPACE__</constant> ØªÙØ³Ø· ÙØ§Ù ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ ØªØ¹ÛÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯. Ø¨ÛØ±Ù٠از ÙØ¶Ø§Û ÙØ§Ù اÛ٠ثابت Ù ÙØ¯Ø§Ø± رشت٠خاÙÛ Ø±Ø§ Ø®ÙØ§Ùد داشت. اÛ٠ثابت Ø¨Ù Ø®ØµÙØµ Ø¨Ø±Ø§Û ÙÙØ´ØªÙ ÙØ§Ù Ú©Ø§Ù Ù ÙØ§Ù âÙØ§Û ÙØ¶Ø§Û ÙØ§Ù Ù ØÙÛ Ù ÙØ± دÛÙØ§Ø² است. <example> <title>Ø§Ø³ØªÙØ§Ø¯Ù از __NAMESPACE__</title> <programlisting role="php"> <![CDATA[ <?php namespace A::B::C; function foo() { // do stuff } set_error_handler(__NAMESPACE__ . "::foo"); ?> ]]> </programlisting> </example> </para> </sect1> <sect1 xml:id="language.namespaces.rules"> <title>ÙÙØ§ÙÛ٠تØÙÛÙ ÙØ§Ù </title> <para> ÙØ§Ù âÙØ§ با Ø§Ø³ØªÙØ§Ø¯Ù از ÙÙØ§ÙÛÙ Ø²ÛØ± Ù ÙØ±Ø¯ تØÙÛÙ ÙØ±Ø§Ø± Ù ÛâÚ¯ÛØ±Ùد. <orderedlist> <listitem> <simpara> ÙØ§Ù âÙØ§Û تاÛÛØ¯ شد٠در Ø·Ù٠کا٠پاÛ٠با ØªÙØ¬Ù ب٠ÙÙØ§ÙÛ٠کا٠پاÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. Ø¨Ø±Ø§Û ÙÙ ÙÙ٠اگر ÙØ¶Ø§Û ÙØ§Ù A::B::C ÙØ§Ø±Ø¯ شد٠باشد ÛÚ© ÙØ±Ø§Ø®ÙاÙÛ Ø¨Ø±Ø§Û <code>C::D::e()</code> ب٠<code>A::B::C::D::e()</code> ØªØ±Ø¬Ù Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> ÙØ§Ù Ú©ÙØ§Ø³ تاÛÛØ¯ ÙØ´Ø¯Ù در Ø·Ù٠کا٠پاÛ٠با ØªÙØ¬Ù ب٠ÙÙØ§ÙÛÙ ÙØ±Ùد (جاÛگزÛÙÛ ÙØ§Ù Ú©ÙØªØ§Ù با ÙØ§Ù کا٠Ù) ØªØ±Ø¬Ù Ù Ø®ÙØ§ÙÙØ¯ شد. Ø¨Ø±Ø§Û ÙÙ ÙÙ٠اگر ÙØ¶Ø§Û ÙØ§Ù <literal>A::B::C</literal> ÙØ§Ø±Ø¯ شد٠باشد <code>new C()</code> ب٠<code>new A::B::C()</code> ØªØ±Ø¬Ù Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> در داخ٠ÛÚ© ÙØ¶Ø§Û ÙØ§Ù ÙØ±Ø§Ø®ÙاÙÛ ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù ک٠در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ ØªØ¹Ø±Û٠شدÙâØ§ÙØ¯ (در Ø²Ù Ø§Ù ÙØ±Ø§Ø®ÙاÙÛ Ø´ÙØ§Ø®ØªÙ شدÙâØ§ÙØ¯) ب٠عÙÙØ§Ù ÙØ±Ø§Ø®ÙاÙÛ Ø§ÛÙ ÙØ¶Ø§Û ÙØ§Ù âÙØ§ در ز٠ا٠کا٠پاÛÙ ØªÙØ³Ûر Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. </simpara> </listitem> <listitem> <simpara> در Ø¯Ø§Ø®Ù ÙØ¶Ø§Û ÙØ§Ù (ÙØ±Ø¶ Ú©ÙÛØ¯ A::B) Ø¨Ù ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø¯Ø± ز٠ا٠اجرا تØÙÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. در اÛÙØ¬Ø§ ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ ØªØ§Ø¨Ø¹ <literal>foo()</literal> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© تابع در ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ù Ûâگردد: <literal>A::B::foo()</literal>. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ù ÛâÙÙ Ø§ÛØ¯ تا تابع <emphasis>internal</emphasis> را ÛØ§Ùت٠٠<literal>foo()</literal> را اجرا ÙÙ Ø§ÛØ¯. </simpara> </listitem> </orderedlist> <simpara> Ø¨Ø±Ø§Û ÙØ±Ø§Ø®ÙاÙÛ ÛÚ© تابع تعرÛÙ Ø´Ø¯Ù ØªÙØ³Ø· کاربر در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ <literal>::foo()</literal> Ø§Ø³ØªÙØ§Ø¯Ù Ø®ÙØ§Ùد شد. </simpara> </listitem> <listitem> <simpara> در ÛÚ© ÙØ¶Ø§Û ÙØ§Ù (ÙØ±Ø¶ Ú©ÙÛØ¯ <literal>A::B</literal>) ÙØ§Ù Ú©ÙØ§Ø³ تاÛÛØ¯ ÙØ´Ø¯Ù را در ز٠ا٠اجرا تØÙÛÙ Ù ÛâÙÙ Ø§ÛØ¯. در اÛÙØ¬Ø§ ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ <code>new C()</code> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© Ú©ÙØ§Ø³ از ÙØ¶Ø§Û ÙØ§Ù ÙØ¹ÙÛ Ø®ÙØ§Ùد گشت: <literal>A::B::C</literal>. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ø®ÙØ§Ùد کرد Ú©Ù Ú©ÙØ§Ø³ <emphasis>internal</emphasis> را ÛØ§Ùت٠٠<literal>C</literal> را اجرا ÙÙ Ø§ÛØ¯. </simpara> </listitem> <listitem> <simpara> ØªÙØ§Ø´ Ø®ÙØ§Ùد کرد Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± <literal>A::B::C</literal> را Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û ÙÙ Ø§ÛØ¯. </simpara> </listitem> </orderedlist> <simpara> Ø¨Ø±Ø§Û Ø§Ø±Ø¬Ø§Ø¹ ب٠ÛÚ© Ú©ÙØ§Ø³ تعرÛÙ Ø´Ø¯Ù ØªÙØ³Ø· کاربر در ÙØ¶Ø§Û ÙØ§Ù Ø¬ÙØ§ÙÛ Ø¨Ø§ÛØ¯ از <code>new ::C()</code> Ø§Ø³ØªÙØ§Ø¯Ù Ø´ÙØ¯. </simpara> </listitem> <listitem> <simpara> ÙØ±Ø§Ø®ÙاÙÛ ØªÙØ§Ø¨Ø¹ تاÛÛØ¯ ÙØ´Ø¯Ù در ز٠ا٠اجرا تØÙÛÙ Ø®ÙØ§ÙÙØ¯ Ú¯Ø±Ø¯ÛØ¯. در اÛ٠جا ÚÚ¯ÙÙÚ¯Û ÙØ±Ø§Ø®ÙاÙÛ <literal>A::B::foo()</literal> ÙØ´Ø§Ù داد٠شد٠است: </simpara> <orderedlist> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù تابع <literal>foo()</literal> در ÙØ¶Ø§Û ÙØ§Ù <literal>A::B</literal> Ø®ÙØ§ÙÙØ¯ گشت. </simpara> </listitem> <listitem> <simpara> Ø¨Ø¯ÙØ¨Ø§Ù ÛÚ© Ú©ÙØ§Ø³ <literal>A::B</literal> گشت٠٠٠تد استاتÛÚ© <literal>foo()</literal> را ÙØ±Ø§ Ø®ÙØ§Ùد Ø®ÙØ§Ùد. اگر Ù ÙØ±Ø¯ ÙÛØ§Ø² باشد Ú©ÙØ§Ø³ Ø¨ØµÙØ±Øª Ø®ÙØ¯Ú©Ø§Ø± Ø¨Ø§Ø±Ú¯Ø°Ø§Ø±Û Ø®ÙØ§Ùد شد. </simpara> </listitem> </orderedlist> </listitem> <listitem> <simpara> Ú©ÙØ§Ø³ تاÛÛØ¯ شد٠در ز٠ا٠کا٠پاÛ٠تØÙÛÙ Ø®ÙØ§Ùد Ú¯Ø±Ø¯ÛØ¯ Ø¨Ø±Ø§Û ÙÙ ÙÙÙ <code>new A::B::C()</code> Ø¨Ù Ú©ÙØ§Ø³ <classname>C</classname> از ÙØ¶Ø§Û ÙØ§Ù <literal>A::B</literal> Ø§Ø´Ø§Ø±Ù Ø®ÙØ§Ùد کرد. </simpara> </listitem> </orderedlist> </para> <example> <title>تØÙÛÙ ÙØ§Ù ÙØ´Ø§Ù داد٠شد٠است</title> <programlisting role="php"> <![CDATA[ <?php namespace A; // function calls foo(); // first tries to call "foo" defined in namespace "A" // then calls internal function "foo" ::foo(); // calls function "foo" defined in global scope // class references new B(); // first tries to create object of class "B" defined in namespace "A" // then creates object of internal class "B" new ::B(); // creates object of class "B" defined in global scope // static methods/namespace functions from another namespace B::foo(); // first tries to call function "foo" from namespace "A::B" // then calls method "foo" of internal class "B" ::B::foo(); // first tries to call function "foo" from namespace "B" // then calls method "foo" of class "B" from global scope // static methods/namespace functions of current namespace A::foo(); // first tries to call function "foo" from namespace "A::A" // then tries to call method "foo" of class "A" from namespace "A" // then tries to call function "foo" from namespace "A" // then calls method "foo" of internal class "A" ::A::foo(); // first tries to call function "foo" from namespace "A" // then calls method "foo" of class "A" from global scope ?> ]]> </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 -->