cvs: phpdoc-ar /language oop.xml
[email protected] ("Hafid Benhadria") Sat, 29 May 2004 01:02:03 -0000
| Newsgroups | php.doc.ar |
|---|---|
| Message-ID | <cvshafid1085792523@cvsserver> |
hafid Fri May 28 21:02:03 2004 EDT
Modified files:
/phpdoc-ar/language oop.xml
Log:
Final Partial Translation. EN1.52 Compatible. NOW ISO-8859-6.
hafid-20040528210203.txt
(text/plain, 70 KB)
http://cvs.php.net/diff.php/phpdoc-ar/language/oop.xml?r1=1.2&r2=1.3&ty=u
Index: phpdoc-ar/language/oop.xml
diff -u phpdoc-ar/language/oop.xml:1.2 phpdoc-ar/language/oop.xml:1.3
--- phpdoc-ar/language/oop.xml:1.2 Wed May 26 19:14:21 2004
+++ phpdoc-ar/language/oop.xml Fri May 28 21:02:03 2004
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="WIN-1256"?>
-<!-- $Revision: 1.2 $ -->
-<!-- EN-Revision: 1.52 Maintainer: hafid Status: working -->
+<?xml version="1.0" encoding="ISO-8859-6"?>
+<!-- $Revision: 1.3 $ -->
+<!-- EN-Revision: 1.52 Maintainer: hafid Status: ready -->
<chapter id="language.oop">
- <title>ÇáÃÕäÇÝ "Classes" æÇáßÇÆäÇÊ "Objects"</title>
+ <title>ÇäÃÕæÇá "Classes" èÇäãÇÆæÇÊ "Objects"</title>
<sect1 id="keyword.class">
- <title>ÇáÃÕäÇÝ: <literal>class</literal></title>
+ <title>ÇäÃÕæÇá: <literal>class</literal></title>
<para>
- "class" åí ÊÔßíáÉ ãä ÇáãõÊÛíøöÑÇÊ æÇáÏøæÇá ÇáÊøí ÊÚãá ãÚ
- åÐå ÇáãõÊÛíøöÑÇÊ. ÊõÚóÑøóÝ "class" ÈÇÓÊÎÏÇã ÇáÕøíÛÉ ÇáÊøÇáíøÉ:
+ "class" çê ÊÔãêäÉ åæ ÇäåïÊÚêñðÑÇÊ èÇäÏñèÇä ÇäÊñê ÊÙåä åÙ
+ çÐç ÇäåïÊÚêñðÑÇÊ. ÊïÙîÑñîá "class" ÈÇÓÊÎÏÇå ÇäÕñêÚÉ ÇäÊñÇäêñÉ:
</para>
<para>
<informalexample>
@@ -16,15 +16,15 @@
<![CDATA[
<?php
class Sella {
- var $items; // ÃÛÑÇÖ Ýí ÓáøÊäÇ ááÊÓæøõÞ "shopping cart"
+ var $items; // ÃÚÑÇÖ áê Óäñ澂 ääÊÓèñïâ "shopping cart"
- // ÇÖÇÝÉ $num ÓáÚ(ÜÉ) ãä ÇáÜ $artnr Åáì ÇáÓøáøÉ
+ // ÇÖÇáÉ $num ÓäÙ(àÉ) åæ Çäà $artnr Åäé ÇäÓñäñÉ
function add_item($artnr, $num) {
$this->items[$artnr] += $num;
}
- // äÒÚ $num ÓáÚ(ÜÉ) ãä ÇáÜ $artnr ãä ÇáÓøáøÉ
+ // æÒÙ $num ÓäÙ(àÉ) åæ Çäà $artnr åæ ÇäÓñäñÉ
function remove_item($artnr, $num) {
if ($this->items[$artnr] > $num) {
@@ -42,15 +42,15 @@
</para>
<para>
- íÞæã åÐÇ ÈÊÚÑíÝ ÕäÝ "class" íõÏúÚóì Sella (ÓáøÉ) íÊßæøóä ãä ãÕÝæÝÉ
- ÊÔÇÑßíøÉ "associative array" ãä ÇáÓøáÚ Ýí ÇáÓøáøÉ æßÐÇ ÏÇáÊíä áÇÖÇÝÉ æäÒÚ
- ÃÛÑÇÖ ãä åÐå ÇáÓøáøÉ.
+ êâèå çÐÇ ÈÊÙÑêá Õæá "class" êïÏòÙîé Sella (ÓäñÉ) êÊãèñîæ åæ åÕáèáÉ
+ ÊÔÇÑãêñÉ "associative array" åæ ÇäÓñäÙ áê ÇäÓñäñÉ èãÐÇ ÏÇäÊêæ äÇÖÇáÉ èæÒÙ
+ ÃÚÑÇÖ åæ çÐç ÇäÓñäñÉ.
</para>
<warning>
<simpara>
- <emphasis>áíÓ</emphasis> ÈÇãßÇäß ÊÌÒÆÉ ÊÚÑíÝ ÕäÝò "class definition" ãÇ Åáì
- ÚÏÉ ãáÝÇÊ Ãæ ÚÏÉ ãÞÇØÚ ãä PHP. áä íÚãá ãÇ íÃÊí:
+ <emphasis>äêÓ</emphasis> ÈÇåãÇæã ÊÌÒÆÉ ÊÙÑêá Õæáí "class definition" åÇ Åäé
+ ÙÏÉ åäáÇÊ Ãè ÙÏÉ åâÇ×Ù åæ PHP. äæ êÙåä åÇ êÃÊê:
</simpara>
<para>
<informalexample>
@@ -61,7 +61,7 @@
?>
<?php
function test() {
- print 'ÍÓäÇ';
+ print 'ÍÓæÇ';
}
}
?>
@@ -72,66 +72,66 @@
</warning>
<simpara>
- ÊÕáÍ ÇáÊøäÈíåÇÊ ÇáÂÊíøÉ ãÚ PHP 4.
+ ÊÕäÍ ÇäÊñæÈêçÇÊ ÇäÂÊêñÉ åÙ PHP 4.
</simpara>
<caution>
<simpara>
- ÇáÅÓã <literal>stdClass</literal> ãõÓÊóÎúÏóã ÏÇÎáíÇ ãä ÞÈá
- Zend æåæ ãÍÌæÒ. áíÓ ÈÇãßÇäß ÇãÊáÇß ÕäÝ íõÏúÚóì
- <literal>stdClass</literal>¡ Ýí PHP.
+ ÇäÅÓå <literal>stdClass</literal> åïÓÊîÎòÏîå ÏÇÎäêÇ åæ âÈä
+ Zend èçè åÍÌèÒ. äêÓ ÈÇåãÇæã ÇåÊäÇã Õæá êïÏòÙîé
+ <literal>stdClass</literal>¬ áê PHP.
</simpara>
</caution>
<caution>
<simpara>
- ÊÊÓã ÃÓãÇÁ ÇáÏøæÇá <literal>__sleep</literal> æ
- <literal>__wakeup</literal> ÈßæäåÇ ÓÍÑíøÉ ãÚ ÃÕäÇÝ PHP.
- áÇ íãßäß ÇãÊáÇß ÏæÇá ÊÍãá åÐå ÇáÃÓãÇÁ Ýí Ãíø ãä
- ÃÕäÇÝß ÅáÇ ÅÐÇ ÑÛÈÊ Ýí ÇÔÑÇßåÇ ÈÇáÎÇÕíÉ ÇáÓøÍÑíøÉ "magic functionality".
- áãÒíÏ ãä ÇáãÚáæãÇÊ¡ ÇÓÊÚÑÖ ãÇ Ýí ÇáÃÓÝá.
+ ÊÊÓå ÃÓåÇÁ ÇäÏñèÇä <literal>__sleep</literal> è
+ <literal>__wakeup</literal> ÈãèæçÇ ÓÍÑêñÉ åÙ ÃÕæÇá PHP.
+ äÇ êåãæã ÇåÊäÇã ÏèÇä ÊÍåä çÐç ÇäÃÓåÇÁ áê Ãêñ åæ
+ ÃÕæÇáã ÅäÇ ÅÐÇ ÑÚÈÊ áê ÇÔÑÇãçÇ ÈÇäÎÇÕêÉ ÇäÓñÍÑêñÉ "magic functionality".
+ äåÒêÏ åæ ÇäåÙäèåÇʬ ÇÓÊÙÑÖ åÇ áê ÇäÃÓáä.
</simpara>
</caution>
<caution>
<simpara>
- ÊÍÌÒ PHP ßÇÝÉ ÃÓãÇÁ ÇáÏøæÇá ÇáÊøí ÊÈÏà ÈÜ __ Úáì ÃäøåÇ ÓÍÑíøÉ.
- íõæÕóì ÈÃä áÇ ÊÓÊÎÏã ÃÓãÇÁ ÏæÇá ÈåÇ
- __ Ýí PHP ÅáÇ ÅÐÇ ÑÛÈÊ Ýí ÈÚÖ ÇáÎÕÇÆÕ ÇáÓøÍÑíøÉ¡ ÇáãõæóËøóÞóÉ.
+ ÊÍÌÒ PHP ãÇáÉ ÃÓåÇÁ ÇäÏñèÇä ÇäÊñê ÊÈÏà Èà __ Ùäé ÃæñçÇ ÓÍÑêñÉ.
+ êïèÕîé ÈÃæ äÇ ÊÓÊÎÏå ÃÓåÇÁ ÏèÇä ÈçÇ
+ __ áê PHP ÅäÇ ÅÐÇ ÑÚÈÊ áê ÈÙÖ ÇäÎÕÇÆÕ ÇäÓñÍÑêñɬ ÇäåïèîËñîâîÉ.
</simpara>
</caution>
<simpara>
- Ýí PHP 4¡ íõÓúãóÍ ÝÞØ ÈÇáãõÓÊåøöáÇÊ ÇáËøÇÈÊÉ "constant initializers" ÇáÎÇÕÉ ÈãõÊÛíøöÑÇÊ <literal>var</literal>.
- áÃÌá ÇÓÊåáÇá ãõÊÛíøöÑÇÊ ÈÞíã ÛíÑ-ËÇÈËÉ¡
- ÊÍÊÇÌ áÏÇáÉ ÇÓÊåáÇá "initialization function" íÊã ÇÓÊÏÚÇÄåÇ
- ÂáíÇð ÚäÏ íÌÑí ÈäÇÁ ßÇÆä ÇäØáÇÞÇð ãä
- ÇáÕøöäÝ. ãËá åÐå ÇáÏøÇáÉ ÊõÓãóì ÈÇáÈÇäíÉ "constructor" (ÇÓÊÚÑÖ ãÇ íÃÊí).
+ áê PHP 4¬ êïÓòåîÍ áâ× ÈÇäåïÓÊçñðäÇÊ ÇäËñÇÈÊÉ "constant initializers" ÇäÎÇÕÉ ÈåïÊÚêñðÑÇÊ <literal>var</literal>.
+ äÃÌä ÇÓÊçäÇä åïÊÚêñðÑÇÊ Èâêå ÚêÑ-ËÇÈËɬ
+ ÊÍÊÇÌ äÏÇäÉ ÇÓÊçäÇä "initialization function" êÊå ÇÓÊÏÙÇÄçÇ
+ ÂäêÇë ÙæÏ êÌÑê ÈæÇÁ ãÇÆæ Çæ×äÇâÇë åæ
+ ÇäÕñðæá. åËä çÐç ÇäÏñÇäÉ ÊïÓåîé ÈÇäÈÇæêÉ "constructor" (ÇÓÊÙÑÖ åÇ êÃÊê).
</simpara>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
class Sella {
- /* áÇ ÔíÁ ãä åÐÇ ÓíÚãá Ýí PHP 4. */
+ /* äÇ ÔêÁ åæ çÐÇ ÓêÙåä áê PHP 4. */
var $todays_date = date("Y-m-d");
var $name = $firstname;
- var $owner = 'ÕáÇÍ ' . 'ÖíÝ';
- /* Ýí Ííä¡ ÓÊÚãá ÇáãÕÝæÝÇÊ ÇáÊøí ÊÊÖãä ÞíãÇ ËÇÈÊÉð. */
- var $items = array("ÑÇÆí", "ÊáÝÇÒ");
+ var $owner = 'ÕäÇÍ ' . 'Öêá';
+ /* áê Íêæ¬ ÓÊÙåä ÇäåÕáèáÇÊ ÇäÊñê ÊÊÖåæ âêåÇ ËÇÈÊÉë. */
+ var $items = array("ÑÇÆê", "ÊäáÇÒ");
}
-/* åßÐÇ íÌÈ Ãä ÊÊã ÇáÃãæÑ. */
+/* çãÐÇ êÌÈ Ãæ ÊÊå ÇäÃåèÑ. */
class Sella {
var $todays_date;
var $name;
var $owner;
- var $items = array("ÑÇÆí", "ÊáÝÇÒ");
+ var $items = array("ÑÇÆê", "ÊäáÇÒ");
function Sella() {
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
- /* ÅáÎ. . . */
+ /* ÅäÎ. . . */
}
}
?>
@@ -140,9 +140,9 @@
</informalexample>
<para>
- ÇáÃÕäÇÝ åí ÚÈÇÑÉ Úä ÃäæÇÚ áÐáß Ýåí ÈãËÇÈÉ ÊãåíÏ ááãõÊÛíøöÑÇÊ
- ÇáÍÇáíøÉ. Úáíß Ãä ÊäÔÆ ãõÊÛíøöÑÉ ãä ÇáäøæÚ ÇáãÑÛæÈ Ýíå ÈæÇÓØÉ
- ãõÔÛøöá "operator": <literal>new</literal>.
+ ÇäÃÕæÇá çê ÙÈÇÑÉ Ùæ ÃæèÇÙ äÐäã áçê ÈåËÇÈÉ ÊåçêÏ ääåïÊÚêñðÑÇÊ
+ ÇäÍÇäêñÉ. Ùäêã Ãæ ÊæÔÆ åïÊÚêñðÑÉ åæ ÇäæñèÙ ÇäåÑÚèÈ áêç ÈèÇÓ×É
+ åïÔÚñðä "operator": <literal>new</literal>.
</para>
<informalexample>
@@ -160,43 +160,43 @@
</informalexample>
<para>
- íõäÔöÄõ åÐÇ ÇáßÇÆäÇÊó <varname>$cart</varname> æ
- <varname>$another_cart</varname>¡ æßáÇåãÇ ãä ÇáÕøäÝ Cart. ÊÊã ãäÇÏÇÉõ ÇáÏøóÇáÉó
- add_item() ÇáÎÇÕÉ ÈÇáßÇÆä <varname>$cart</varname> ÈÛÑÖ ÇÖÇÝÉ ÛÑÖ 1
- ãä ÇáÓøáÚÉ ÑÞã 10 Åáì <varname>$cart</varname>. ÊÊã ÇÖÇÝÉ 3 ÃÛÑÇÖ ãä
- ÇáÓøáÚÉ ÑÞã 0815 Åáì <varname>$another_cart</varname>.
+ êïæÔðÄï çÐÇ ÇäãÇÆæÇÊî <varname>$cart</varname> è
+ <varname>$another_cart</varname>¬ èãäÇçåÇ åæ ÇäÕñæá Cart. ÊÊå åæÇÏÇÉï ÇäÏñîÇäÉî
+ add_item() ÇäÎÇÕÉ ÈÇäãÇÆæ <varname>$cart</varname> ÈÚÑÖ ÇÖÇáÉ ÚÑÖ 1
+ åæ ÇäÓñäÙÉ Ñâå 10 Åäé <varname>$cart</varname>. ÊÊå ÇÖÇáÉ 3 ÃÚÑÇÖ åæ
+ ÇäÓñäÙÉ Ñâå 0815 Åäé <varname>$another_cart</varname>.
</para>
<para>
- ßáø ãä <varname>$cart</varname> æ <varname>$another_cart</varname> ÊãÊáßÇä
- ÇáÏøæÇá add_item()¡ remove_item() æãõÊÛíøöÑÉ items. ÊõÚÊóÈóÑõ åÐå
- ÏæÇá æãõÊÛíøöÑÇÊ ãõÊãÇíöÒÉ. íãßä Ãä ÊõÝßøöÑ ÈÇáßÇÆäÇÊ
- ßÔíÁ ããÇËá ááãõÌáøÏÇÊ Ýí äÙÇã ãáÝÇÊíø. Ýí äÙÇã ãáÝÇÊíø ãÇ¡ íãßäß
- ÇãÊáÇß ãáÝí <filename>ÇÞÑÃäí.TXT</filename> ãÎÊáÝíä ØÇáãÇ ÃäøåãÇ íÊæÇÌÏÇä Ýí ãõÌáøÏÇÊ
- ãõÎÊáöÝÉ. ãËáãÇ ÇáÍÇá ãÚ ÇáãõÌáøÏÇÊ¡ ÍíË íÊæÌøÈ Úáíß ÑÞä
- ÇÓã ÇáãÓÇÑ ßÇãáÇ ÈÛÑÖ ÈáæÛ ßáø ãáÝ ÇäØáÇÞÇ ãä ÇáãõÌáøÏ ÇáæÇÞÚ Ýí ÇáãÓÊæì ÇáÃÚáì "toplevel directory"¡ Úáíß Ãä
- Ãä ÊõÍÏøöÏó ÇáÅÓã ÇáßÇãá ááÏÇáÉ ÇáÊøí ÊæøÏ ãäÇÏÇÊåÇ: Öãä ãÕØáÍÇÊ PHP¡
- ÓíÊãËá ÇáãõÌáøóÏ ÇáæÇÞÚ Ýí ÇáãÓÊæì ÇáÃÚáì Ýí ÇáãÌÇá ÇáÅÓãíø ÇáÔøÇãá "global namespace" Ýí Ííä ÓíÊãËá
- ÝÇÕá ÅÓã ÇáãÓÇÑ "pathname separator" Ýí <literal>-></literal>. æåßÐÇ¡ ÝÅäø ÇáÃÓãÇÁ
- <varname>$cart->items</varname> æ
- <varname>$another_cart->items</varname> ÊõØúáóÞ Úáì ãõÊÛíøöÑÊíä ãÎÊáÝÊíä.
- áÇÍÙ Ãäø ÇáãõÊÛíøöÑÉ ÊõÏúÚóì <varname>$cart->items</varname> æáíÓ
- <varname>$cart->$items</varname> ããÇ íÚäí Ãäø ÅÓã ãõÊÛíøöÑÉ Ýí PHP íãÊáß
- ÑãÒ ÏæáÇÑ ÃÍÇÏíø ÝÞØ.
+ ãäñ åæ <varname>$cart</varname> è <varname>$another_cart</varname> ÊåÊäãÇæ
+ ÇäÏñèÇä add_item()¬ remove_item() èåïÊÚêñðÑÉ items. ÊïÙÊîÈîÑï çÐç
+ ÏèÇä èåïÊÚêñðÑÇÊ åïÊåÇêðÒÉ. êåãæ Ãæ ÊïáãñðÑ ÈÇäãÇÆæÇÊ
+ ãÔêÁ ååÇËä ääåïÌäñÏÇÊ áê æØÇå åäáÇÊêñ. áê æØÇå åäáÇÊêñ åǬ êåãæã
+ ÇåÊäÇã åäáê <filename>ÇâÑÃæê.TXT</filename> åÎÊäáêæ ×ÇäåÇ ÃæñçåÇ êÊèÇÌÏÇæ áê åïÌäñÏÇÊ
+ åïÎÊäðáÉ. åËäåÇ ÇäÍÇä åÙ ÇäåïÌäñÏÇʬ ÍêË êÊèÌñÈ Ùäêã Ñâæ
+ ÇÓå ÇäåÓÇÑ ãÇåäÇ ÈÚÑÖ ÈäèÚ ãäñ åäá Çæ×äÇâÇ åæ ÇäåïÌäñÏ ÇäèÇâÙ áê ÇäåÓÊèé ÇäÃÙäé "toplevel directory"¬ Ùäêã Ãæ
+ Ãæ ÊïÍÏñðÏî ÇäÅÓå ÇäãÇåä ääÏÇäÉ ÇäÊñê ÊèñÏ åæÇÏÇÊçÇ: Öåæ åÕ×äÍÇÊ PHP¬
+ ÓêÊåËä ÇäåïÌäñîÏ ÇäèÇâÙ áê ÇäåÓÊèé ÇäÃÙäé áê ÇäåÌÇä ÇäÅÓåêñ ÇäÔñÇåä "global namespace" áê Íêæ ÓêÊåËä
+ áÇÕä ÅÓå ÇäåÓÇÑ "pathname separator" áê <literal>-></literal>. èçãÐǬ áÅæñ ÇäÃÓåÇÁ
+ <varname>$cart->items</varname> è
+ <varname>$another_cart->items</varname> Êï×òäîâ Ùäé åïÊÚêñðÑÊêæ åÎÊäáÊêæ.
+ äÇÍØ Ãæñ ÇäåïÊÚêñðÑÉ ÊïÏòÙîé <varname>$cart->items</varname> èäêÓ
+ <varname>$cart->$items</varname> ååÇ êÙæê Ãæñ ÅÓå åïÊÚêñðÑÉ áê PHP êåÊäã
+ ÑåÒ ÏèäÇÑ ÃÍÇÏêñ áâ×.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-// ÕÍíÍ¡ $ ÃÍÇÏí
+// ÕÍêͬ $ ÃÍÇÏê
$cart->items = array("10" => 1);
-// ÛíÑ ÕÇáÍ¡ áÃäø $cart->$items ÊõÕÈöÍõ $cart->""
+// ÚêÑ ÕÇäͬ äÃæñ $cart->$items ÊïÕÈðÍï $cart->""
$cart->$items = array("10" => 1);
-// ÕÍíÍ¡ áßä íãßä Ãä Êßæä Ãæ áÇ Êßæä ãÇ ßÇä ãÞÕæÏÇð ãäåÇ:
-// $cart->$myvar ÊõÕÈöÍõ $cart->items
+// ÕÍêͬ äãæ êåãæ Ãæ Êãèæ Ãè äÇ Êãèæ åÇ ãÇæ åâÕèÏÇë åæçÇ:
+// $cart->$myvar ÊïÕÈðÍï $cart->items
$myvar = 'items';
$cart->$myvar = array("10" => 1);
?>
@@ -205,25 +205,25 @@
</informalexample>
<para>
- Öãä ÊÚÑíÝ ÕöäÝò ãÇ¡ áÇ ÊÚÑÝ ÊÍÊ Ãíø ÊÓãíÉ Óíßæä ÇáßÇÆäõ
- ÞÇÈáÇ ááæáæÌ Ýí ÈÑäÇãÌß: ÚäÏ ßÊÇÈÉ ÕäÝ Cart¡ ßÇä
- íõÌåóáõ Ãäø ÇáßÇÆä ÓíõÓóãóì
- <varname>$cart</varname> Ãæ <varname>$another_cart</varname> áÇÍÞÇð. æåßÐÇ¡
- ÝÅäøå áíÓ ÈÇãßÇäß ßÊÇÈÉ <varname>$cart->items</varname> Öãä ÕäÝ Cart
- äÝÓå. ÈÏáÇ ãä Ðáß¡ æáÃÌá ÇáÊøóãßøõä ãä æáæÌ ãÇ íÎøõÕå ãä ÏæÇá
- æãõÊÛíøöÑÇÊ ÇäØáÇÞÇ ãä ÕäÝ ãÇ¡ íãßä ááãÑÁ Ãä íÓÊÎÏã ÔÈå-ÇáãõÊÛíøöÑÉ "pseudo-variable"
- <varname>$this</varname> ÇáÊøí íãßä Ãä ÊÞÑà Úáì Ôßá 'ÃäÇ ÈÇáÐøÇÊ - my own' Ãæ 'ÇáßÇÆä ÇáÍÇáíø - current
- object'. æåßÐÇ¡ íõãßä ÞÑÇÁÉ '<varname>$this->items[$artnr]</varname> +=
- <varname>$num</varname>' æßÃäøåÇ 'ÇÖÇÝÉ <varname>$num</varname> Åáì
- ÇáÚÏøóÇÏ <varname>$artnr</varname> ÇáÎÇÕ ÈãÕÝæÝÊí ááÃÛÑÇÖ' Ãæ 'ÇÖÇÝÉ
- <varname>$num</varname> Åáì ÇáÚÏøóÇÏ <varname>$artnr</varname> ÇáÎÇÕ
- ÈãÕÝæÝÉ ÇáÃÛÑÇÖ Öãä ÇáßÇÆä ÇáÍÇáíø'.
+ Öåæ ÊÙÑêá Õðæáí åǬ äÇ ÊÙÑá ÊÍÊ Ãêñ ÊÓåêÉ Óêãèæ ÇäãÇÆæï
+ âÇÈäÇ ääèäèÌ áê ÈÑæÇåÌã: ÙæÏ ãÊÇÈÉ Õæá Cart¬ ãÇæ
+ êïÌçîäï Ãæñ ÇäãÇÆæ ÓêïÓîåîé
+ <varname>$cart</varname> Ãè <varname>$another_cart</varname> äÇÍâÇë. èçãÐǬ
+ áÅæñç äêÓ ÈÇåãÇæã ãÊÇÈÉ <varname>$cart->items</varname> Öåæ Õæá Cart
+ æáÓç. ÈÏäÇ åæ Ðä㬠èäÃÌä ÇäÊñîåãñïæ åæ èäèÌ åÇ êÎñïÕç åæ ÏèÇä
+ èåïÊÚêñðÑÇÊ Çæ×äÇâÇ åæ Õæá åǬ êåãæ ääåÑÁ Ãæ êÓÊÎÏå ÔÈç-ÇäåïÊÚêñðÑÉ "pseudo-variable"
+ <varname>$this</varname> ÇäÊñê êåãæ Ãæ ÊâÑà Ùäé Ôãä 'ÃæÇ ÈÇäÐñÇÊ - my own' Ãè 'ÇäãÇÆæ ÇäÍÇäêñ - current
+ object'. èçãÐǬ êïåãæ âÑÇÁÉ '<varname>$this->items[$artnr]</varname> +=
+ <varname>$num</varname>' èãÃæñçÇ 'ÇÖÇáÉ <varname>$num</varname> Åäé
+ ÇäÙÏñîÇÏ <varname>$artnr</varname> ÇäÎÇÕ ÈåÕáèáÊê ääÃÚÑÇÖ' Ãè 'ÇÖÇáÉ
+ <varname>$num</varname> Åäé ÇäÙÏñîÇÏ <varname>$artnr</varname> ÇäÎÇÕ
+ ÈåÕáèáÉ ÇäÃÚÑÇÖ Öåæ ÇäãÇÆæ ÇäÍÇäêñ'.
</para>
<note>
<para>
- åäÇß ÈÚÖ ÇáÏøæÇá ÇáÌãíáÉ ááÊÚÇãá ãÚ ÇáÃÕäÇÝ æÇáßÇÆäÇÊ. áÑÈãÇ ÊÑÛÈ
- Ýí ÇáÞÇÁ äÙÑÉ Úáì <link linkend="ref.classobj">ÏæÇá ÇáÃÕäÇÝ/ÇáßÇÆäÇÊ "Class/Object
+ çæÇã ÈÙÖ ÇäÏñèÇä ÇäÌåêäÉ ääÊÙÇåä åÙ ÇäÃÕæÇá èÇäãÇÆæÇÊ. äÑÈåÇ ÊÑÚÈ
+ áê ÇäâÇÁ æØÑÉ Ùäé <link linkend="ref.classobj">ÏèÇä ÇäÃÕæÇá/ÇäãÇÆæÇÊ "Class/Object
Functions"</link>.
</para>
</note>
@@ -233,19 +233,19 @@
<title><literal>extends</literal></title>
<para>
- ÛÇáÈÇ ãÇ ÊÍÊÇÌ Åáì ÃÕäÇÝ ÊÊÖãä ãõÊÛíøöÑÇÊ æÏæÇá ãõãÇËáÉ
- áÕäÝ ÂÎÑ ãõÊæÇÌöÏ. Ýí ÇáæÇÞÚ¡ Åäøå áÚÇÏÉ ØíøöÈÉ Ãä
- ÊõÚÑøöÝ ÕäÝÇ äæÚíøÇð "generic class" íãßä ÇÓÊÎÏÇãå Ýí ßÇÝÉ
- ãÔÇÑíÚß æÊßííÝ åÐÇ ÇáÕøöäÝ ÈÍÓÈ ÍÇÌíÇÊ ßáø ãä
- ãÔÇÑíÚß ÇáÎÇÕÉ. áÊÓåíá åÐÇ ÇáÃãÑ¡ íãßä ááÃÕäÇÝ Ãä Êßæä
- ÊæÓÚÇÊ áÃÕäÇÝ ÃÎÑì. íÊæÝÑ ÇáÕøöäÝ ÇáãõæÓøóÚ Ãæ ÇáãõÔÊóÞ
- Úáì ßÇÝÉ ãõÊÛíøöÑÇÊ æÏæÇá ÇáÕøäÝ ÇáÃÓÇÓíø (åÐÇ ãÇ
- íõÓãóì 'æÑÇËÉ - inheritance' ÈÇáÑøÛã ãä æÇÞÚ Ãä áÇ ÃÍÏ ÞÏ ãÇÊ) æãÇ
- ÊõÖíÝõå Åáì ÇáÊøÚÑíÝ ÇáãõæÓøóÚ. íÓÊÍíá
- ÇáØøÑÍ ÇäØáÇÞÇ ãä ÕäÝò ãÇ Ãí ÅÒÇáÉ ÊÚÑíÝ ÃíøÉ
- ÏæÇá Ãæ ãõÊÛíøöÑÇÊ ãÊæÇÌÏÉ. ÏÇÆãÇ ãÇ íÑÊÈØ ÇáÕøöäÝ ÇáãõæÓøóÚ ÊÈÚíÉð
- ÈÕäÝ ÞÇÚÏíø æÇÍÏ ããÇ íÚäí Ãäø ÇáæÑÇËÉ ÇáãõÊÚÏøöÏÉ "multiple inheritance"
- áíÓÊ ãÏÚæãÉð. íÊã ÊæÓíÚ ÇáÃÕäÇÝ ÈÇÓÊÎÏÇã ÇáßáãÉ ÇáãÝÊÇÍíøÉ 'extends'.
+ ÚÇäÈÇ åÇ ÊÍÊÇÌ Åäé ÃÕæÇá ÊÊÖåæ åïÊÚêñðÑÇÊ èÏèÇä åïåÇËäÉ
+ äÕæá ÂÎÑ åïÊèÇÌðÏ. áê ÇäèÇâÙ¬ Åæñç äÙÇÏÉ ×êñðÈÉ Ãæ
+ ÊïÙÑñðá ÕæáÇ æèÙêñÇë "generic class" êåãæ ÇÓÊÎÏÇåç áê ãÇáÉ
+ åÔÇÑêÙã èÊãêêá çÐÇ ÇäÕñðæá ÈÍÓÈ ÍÇÌêÇÊ ãäñ åæ
+ åÔÇÑêÙã ÇäÎÇÕÉ. äÊÓçêä çÐÇ ÇäÃåѬ êåãæ ääÃÕæÇá Ãæ Êãèæ
+ ÊèÓÙÇÊ äÃÕæÇá ÃÎÑé. êÊèáÑ ÇäÕñðæá ÇäåïèÓñîÙ Ãè ÇäåïÔÊîâ
+ Ùäé ãÇáÉ åïÊÚêñðÑÇÊ èÏèÇä ÇäÕñæá ÇäÃÓÇÓêñ (çÐÇ åÇ
+ êïÓåîé 'èÑÇËÉ - inheritance' ÈÇäÑñÚå åæ èÇâÙ Ãæ äÇ ÃÍÏ âÏ åÇÊ) èåÇ
+ ÊïÖêáïç Åäé ÇäÊñÙÑêá ÇäåïèÓñîÙ. êÓÊÍêä
+ Çä×ñÑÍ Çæ×äÇâÇ åæ Õæáí åÇ Ãê ÅÒÇäÉ ÊÙÑêá ÃêñÉ
+ ÏèÇä Ãè åïÊÚêñðÑÇÊ åÊèÇÌÏÉ. ÏÇÆåÇ åÇ êÑÊÈ× ÇäÕñðæá ÇäåïèÓñîÙ ÊÈÙêÉë
+ ÈÕæá âÇÙÏêñ èÇÍÏ ååÇ êÙæê Ãæñ ÇäèÑÇËÉ ÇäåïÊÙÏñðÏÉ "multiple inheritance"
+ äêÓÊ åÏÙèåÉë. êÊå ÊèÓêÙ ÇäÃÕæÇá ÈÇÓÊÎÏÇå ÇäãäåÉ ÇäåáÊÇÍêñÉ 'extends'.
</para>
<informalexample>
@@ -265,72 +265,72 @@
</informalexample>
<para>
- íÞæã åÐÇ ÈÊÚÑíÝ ÕäÝ íõÓãì Named_Cart íÊæÝÑ Úáì ßÇÝÉ ãõÊÛíøöÑÇÊ æÏæÇá
- Cart ÅÖÇÝÉ Åáì ãõÊÛíøöÑÉ ÅÖÇÝíøÉ åí <varname>$owner</varname> æßÐÇ
- ÏÇáÉ ÅÖÇÝíøÉ åí set_owner(). ÃäÔÆ ÓáøÉ ãõÓãÇÉ "named cart" ÈÇáØøÑíÞÉ ÇáãõÚÊÇÏÉ
- æÓÊÊãßä ãä ÊÚííä æãÚÑÝÉ ãÇáöß ÇáÓøáÇÊ. áÇ ÒÇá ÈÇãßÇäß ÇÓÊÎÏÇã ÏæÇá ÓáøÉ
- ÚÇÏíøÉ Úáì ÓáÇøÊ ãõÓãóÇÉ:
+ êâèå çÐÇ ÈÊÙÑêá Õæá êïÓåé Named_Cart êÊèáÑ Ùäé ãÇáÉ åïÊÚêñðÑÇÊ èÏèÇä
+ Cart ÅÖÇáÉ Åäé åïÊÚêñðÑÉ ÅÖÇáêñÉ çê <varname>$owner</varname> èãÐÇ
+ ÏÇäÉ ÅÖÇáêñÉ çê set_owner(). ÃæÔÆ ÓäñÉ åïÓåÇÉ "named cart" ÈÇä×ñÑêâÉ ÇäåïÙÊÇÏÉ
+ èÓÊÊåãæ åæ ÊÙêêæ èåÙÑáÉ åÇäðã ÇäÓñäÇÊ. äÇ ÒÇä ÈÇåãÇæã ÇÓÊÎÏÇå ÏèÇä ÓäñÉ
+ ÙÇÏêñÉ Ùäé ÓäÇñÊ åïÓåîÇÉ:
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-$ncart = new Named_Cart; // ÇäÔÇÁ ÓáøÉ ãõÓãóÇÉ
-$ncart->set_owner("kris"); // ÊÓãíÉ åÐå ÇáÓøáøÉ
-print $ncart->owner; // ØÈÇÚÉ ÃÓãÇÁ ãÇáßí ÇáÓøáøÉ
-$ncart->add_item("10", 1); // (ÎÇÕíÉ ãæÑæËÉ Úä ÇáÓøáøÉ)
+$ncart = new Named_Cart; // ÇæÔÇÁ ÓäñÉ åïÓåîÇÉ
+$ncart->set_owner("kris"); // ÊÓåêÉ çÐç ÇäÓñäñÉ
+print $ncart->owner; // ×ÈÇÙÉ ÃÓåÇÁ åÇäãê ÇäÓñäñÉ
+$ncart->add_item("10", 1); // (ÎÇÕêÉ åèÑèËÉ Ùæ ÇäÓñäñÉ)
?>
]]>
</programlisting>
</informalexample>
<para>
- íõÓãóì åÐÇ ÃíÖÇ ÈÚáÇÞÉ "æÇáöÏ-ØÝá / parent-child". ÊäÔÆ ÕöäÝÇð¡
- ãä ãÓÊæì ÇáæÇáÏ¡ æÊÓÊÎÏã <literal>extends</literal> ÈÛÑÖ ÇäÔÇÁ ÖöäÝ ÌÏíÏ
- <emphasis>íÞæã</emphasis> Úáì ÇáÕøöäÝ ÇáæÇáöÏ "parent class": ÇáÕøöäÝ ÇáØøöÝá "child class". íãßäß
- ÍÊì ÇÓÊÎÏÇã åÐÇ ÇáÕøöäÝ ÇáØøöÝá ÇáÌÏíÏ æÇäÔÇÁ ÕäÝ ÂÎÑ íÞæã Úáì åÐÇ ÇáÕøöäÝ
- ÇáØøöÝá.
+ êïÓåîé çÐÇ ÃêÖÇ ÈÙäÇâÉ "èÇäðÏ-×áä / parent-child". ÊæÔÆ ÕðæáÇë¬
+ åæ åÓÊèé ÇäèÇäϬ èÊÓÊÎÏå <literal>extends</literal> ÈÚÑÖ ÇæÔÇÁ Öðæá ÌÏêÏ
+ <emphasis>êâèå</emphasis> Ùäé ÇäÕñðæá ÇäèÇäðÏ "parent class": ÇäÕñðæá Çä×ñðáä "child class". êåãæã
+ ÍÊé ÇÓÊÎÏÇå çÐÇ ÇäÕñðæá Çä×ñðáä ÇäÌÏêÏ èÇæÔÇÁ Õæá ÂÎÑ êâèå Ùäé çÐÇ ÇäÕñðæá
+ Çä×ñðáä.
</para>
<note>
<para>
- íÌÈ ÊÚÑíÝ ÇáÃÕäÇÝ ÞÈá ÇÓÊÎÏÇãåÇ! ÅÐÇ ÑÛÈÊ Ãä íõæóÓøöÚó ÇáÕøöäÝõ
- <literal>Named_Cart</literal> ÇáÕøöäÝó
- <literal>Cart</literal>¡ ÓíÊæÌÈ Úáíß ÊÚÑíÝ ÇáÕøöäÝ
- <literal>Cart</literal> ÃæáÇð. ÅÐÇ ÃÑÏÊ ÇäÔÇÁ ÕäÝ ÂÎÑ íõÏúÚóì
- <literal>Yellow_named_cart</literal> íÞæã Úáì ÇáÕøöäÝ
- <literal>Named_Cart</literal>¡ Óíßæä Úáíß ÊÚÑíÝ
- <literal>Named_Cart</literal> ÃæáÇð. áÇÎÊÕÇÑ ÇáÃãæÑ: ÇáÊøÑÊíÈ ÇáÐøí íÊã
- Èå ÊÚÑíÝ ÇáÃÕäÇÝ ãõåöã.
+ êÌÈ ÊÙÑêá ÇäÃÕæÇá âÈä ÇÓÊÎÏÇåçÇ! ÅÐÇ ÑÚÈÊ Ãæ êïèîÓñðÙî ÇäÕñðæáï
+ <literal>Named_Cart</literal> ÇäÕñðæáî
+ <literal>Cart</literal>¬ ÓêÊèÌÈ Ùäêã ÊÙÑêá ÇäÕñðæá
+ <literal>Cart</literal> ÃèäÇë. ÅÐÇ ÃÑÏÊ ÇæÔÇÁ Õæá ÂÎÑ êïÏòÙîé
+ <literal>Yellow_named_cart</literal> êâèå Ùäé ÇäÕñðæá
+ <literal>Named_Cart</literal>¬ Óêãèæ Ùäêã ÊÙÑêá
+ <literal>Named_Cart</literal> ÃèäÇë. äÇÎÊÕÇÑ ÇäÃåèÑ: ÇäÊñÑÊêÈ ÇäÐñê êÊå
+ Èç ÊÙÑêá ÇäÃÕæÇá åïçðå.
</para>
</note>
</sect1>
<sect1 id="language.oop.constructor">
- <title>ÇáÈÇäíÇÊ: <literal>Constructors</literal></title>
+ <title>ÇäÈÇæêÇÊ: <literal>Constructors</literal></title>
<caution>
<simpara>
- ÈÍÓÈ PHP 3 Ãæ PHP 4¡ ÊÊÕÑÝ ÇáÈóÇäöíóÇÊ ÈÕæÑÉ ãÊÛÇíÑÉ. ÊõÝÖøóá ÈÞæÉ
- ÏáÇÆáíÉ PHP 4.
+ ÈÍÓÈ PHP 3 Ãè PHP 4¬ ÊÊÕÑá ÇäÈîÇæðêîÇÊ ÈÕèÑÉ åÊÚÇêÑÉ. ÊïáÖñîä ÈâèÉ
+ ÏäÇÆäêÉ PHP 4.
</simpara>
</caution>
<para>
- ÇáÈÇäíÇÊ åí ÏæÇá Ýí ÕäÝ ÊÊã ãäÇÏÇÊåÇ ÂáíÇ
- ÚäÏ ÇäÔÇÁ ãËíá "instance" ÌÏíÏ áÕöäÝ¡ ÈæÇÓØÉ
- <literal>new</literal>. Ýí PHP 3¡
- ÊÕÈÍ ÏÇáÉ ãÇ ÈÇäíÉð ÚäÏãÇ ÊÊæÝÑ Úáì äÝÓ ÇáÅÓÇã ãËá
- ÇáÕøöäÝ. Ýí PHP 4¡ ÊÕÈÍ ÏÇáÉ ãÇ ÈÇäíÉð ÚäÏãÇ
- ÊÊæÝÑ Úáì äÝÓ ÇáÅÓã ãËá ÇáÕøöäÝ ÇáÐøí ÚõÑøöÝÊ Èå -
- ÇáÝÑÞ ÏÞíÞ áßäå ÍÇÓã (ÇÓÊÚÑÖ ãÇ íÃÊí).
+ ÇäÈÇæêÇÊ çê ÏèÇä áê Õæá ÊÊå åæÇÏÇÊçÇ ÂäêÇ
+ ÙæÏ ÇæÔÇÁ åËêä "instance" ÌÏêÏ äÕðæá¬ ÈèÇÓ×É
+ <literal>new</literal>. áê PHP 3¬
+ ÊÕÈÍ ÏÇäÉ åÇ ÈÇæêÉë ÙæÏåÇ ÊÊèáÑ Ùäé æáÓ ÇäÅÓÇå åËä
+ ÇäÕñðæá. áê PHP 4¬ ÊÕÈÍ ÏÇäÉ åÇ ÈÇæêÉë ÙæÏåÇ
+ ÊÊèáÑ Ùäé æáÓ ÇäÅÓå åËä ÇäÕñðæá ÇäÐñê ÙïÑñðáÊ Èç -
+ ÇäáÑâ Ïâêâ äãæç ÍÇÓå (ÇÓÊÙÑÖ åÇ êÃÊê).
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-// íÚãá ãÚ PHP 3 æ PHP 4.
+// êÙåä åÙ PHP 3 è PHP 4.
class Auto_Cart extends Cart {
function Auto_Cart() {
$this->add_item("10", 1);
@@ -342,31 +342,31 @@
</informalexample>
<para>
- íõÚÑøöÝõ åÐÇ ÕöäÝ Auto_Cart æåæ ÚÈÇÑÉ Úä ÓáøÉ "Cart" ÅÖÇÝÉ Åáì ÈÇäíÉ
- ÊÞæã ÈÇÓÊåáÇá ÇáÓøáøÉ ÈÛÑÖ æÇÍÏ ãä ÇáÓøáÚÉ ÑÞã "10"
- Ýí ßáø ãÑøÉ íÌÑí ÝíåÇ ÇäÔÇÁ ÝíåÇ Auto_Cart ÌÏíÏ ÈæÇÓØÉ "new". ÈÇãßÇä ÇáÈÇäíÇÊ
- ÃÎÐ ÏáÇÆá "arguments"¡ æÇáÊíø íãßä Ãä Êßæä ÇÎÊíÇÑíøÉ¡ ããÇ
- íÌÚáåÇ ÃßËÑ ÞÇÈáíÉ ááÇÓÊÎÏÇã ÈÔßá ãõÚúÊóÈóÑ. ááÇÓÊãÑÇÑ Ýí ÇáÞÏÑÉ Úáì ÇÓÊÎÏÇã ÇáÕøöäÝ
- ãä Ïæä ÇáãóÚúáóãóÇÊ "parameters"¡ íÊæÌÈ ÌÚá ßÇÝÉ ÇáãóÚúáóãóÇÊ¡ ÈÇáäøÓÈÉ ááÈÇäíÇÊ¡
- ÇÎÊíÇÑíøÉ ÈÊÞÏíã Þíã ÇÝÊÑÇÖíøÉ.
+ êïÙÑñðáï çÐÇ Õðæá Auto_Cart èçè ÙÈÇÑÉ Ùæ ÓäñÉ "Cart" ÅÖÇáÉ Åäé ÈÇæêÉ
+ Êâèå ÈÇÓÊçäÇä ÇäÓñäñÉ ÈÚÑÖ èÇÍÏ åæ ÇäÓñäÙÉ Ñâå "10"
+ áê ãäñ åÑñÉ êÌÑê áêçÇ ÇæÔÇÁ áêçÇ Auto_Cart ÌÏêÏ ÈèÇÓ×É "new". ÈÇåãÇæ ÇäÈÇæêÇÊ
+ ÃÎÐ ÏäÇÆä "arguments"¬ èÇäÊêñ êåãæ Ãæ Êãèæ ÇÎÊêÇÑêñɬ ååÇ
+ êÌÙäçÇ ÃãËÑ âÇÈäêÉ ääÇÓÊÎÏÇå ÈÔãä åïÙòÊîÈîÑ. ääÇÓÊåÑÇÑ áê ÇäâÏÑÉ Ùäé ÇÓÊÎÏÇå ÇäÕñðæá
+ åæ Ïèæ ÇäåîÙòäîåîÇÊ "parameters"¬ êÊèÌÈ ÌÙä ãÇáÉ ÇäåîÙòäîåîÇʬ ÈÇäæñÓÈÉ ääÈÇæêÇʬ
+ ÇÎÊêÇÑêñÉ ÈÊâÏêå âêå ÇáÊÑÇÖêñÉ.
</para>
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-// íÚãá ãÚ PHP 3 æ PHP 4.
+// êÙåä åÙ PHP 3 è PHP 4.
class Constructor_Cart extends Cart {
function Constructor_Cart($item = "10", $num = 1) {
$this->add_item ($item, $num);
}
}
-// ÇÈÊíÇÚ äÝÓ ÇáÈÖÇÆÚ ÇáãõãøöáóÉ ÇáÞÏíãÉ.
+// ÇÈÊêÇÙ æáÓ ÇäÈÖÇÆÙ ÇäåïåñðäîÉ ÇäâÏêåÉ.
$default_cart = new Constructor_Cart;
-// ÇÈÊíÇÚ ÍÞíÞíø...
+// ÇÈÊêÇÙ Íâêâêñ...
$different_cart = new Constructor_Cart("20", 17);
?>
@@ -375,16 +375,16 @@
</informalexample>
<para>
- íãßäß ÃíÖÇ ÇÓÊÎÏÇã ãõÔÛøöá <literal>@</literal> ÈÛÑÖ
- <emphasis>ßÊã "mute"</emphasis> ÇáÃÎØÇÁ ÇáØøóÇÑÆÉ Ýí ÇáÈÇäíÉ¡ Úáì ÓÈíá ÇáãËÇá:
+ êåãæã ÃêÖÇ ÇÓÊÎÏÇå åïÔÚñðä <literal>@</literal> ÈÚÑÖ
+ <emphasis>ãÊå "mute"</emphasis> ÇäÃÎ×ÇÁ Çä×ñîÇÑÆÉ áê ÇäÈÇæêɬ Ùäé ÓÈêä ÇäåËÇä:
<literal>@new</literal>.
</para>
<caution>
<simpara>
- Ýí PHP 3¡ ÊÊæÝÑ Úáì ÇáÃÕäÇÝ ÇáãõÔÊøóÞóÉ æÇáÈÇäíÇÊ Úáì ÚÏÏ ãä
- ÇáÊøóÞííÏÇÊ "limitations". íÌÈ ÞÑÇÁÉ ÇáÃãËáÉ ÇáÂÊíøóÉ ÈÇÍÊÑÇÓ
- áÝåã åÐå ÇáÊøÞííÏÇÊ.
+ áê PHP 3¬ ÊÊèáÑ Ùäé ÇäÃÕæÇá ÇäåïÔÊñîâîÉ èÇäÈÇæêÇÊ Ùäé ÙÏÏ åæ
+ ÇäÊñîâêêÏÇÊ "limitations". êÌÈ âÑÇÁÉ ÇäÃåËäÉ ÇäÂÊêñîÉ ÈÇÍÊÑÇÓ
+ äáçå çÐç ÇäÊñâêêÏÇÊ.
</simpara>
</caution>
@@ -394,17 +394,17 @@
<?php
class A {
function A() {
- echo "ÃäÇ ÈÇäíÉ A.<br />\n";
+ echo "ÃæÇ ÈÇæêÉ A.<br />\n";
}
}
class B extends A {
function C() {
- echo "ÃäÇ ÏÇáÉ ÇÚÊíÇÏíøÉ.<br />\n";
+ echo "ÃæÇ ÏÇäÉ ÇÙÊêÇÏêñÉ.<br />\n";
}
}
-// áÇ ÈÇäíÉ íÌÑí ãäÇÏÇÊåÇ Ýí PHP 3.
+// äÇ ÈÇæêÉ êÌÑê åæÇÏÇÊçÇ áê PHP 3.
$b = new B;
?>
]]>
@@ -412,17 +412,17 @@
</informalexample>
<para>
- Ýí PHP 3¡ æáÇ ÃíÉ ÈÇäíÉ ÊÊã ãäÇÏÇÊåÇ Ýí ÇáãËÇá ÇáÚáæíø.
- ÇáÞÇÚÏÉ Ýí PHP 3 åí: 'ÈÇäíÉ ãÇ åí ÚÈÇÑÉ Úä ÏÇáÉ áåÇ äÝÓ
- ÇáÅÓã ãËá ÇáÕøöäÝ.'. ÅÓã ÇáÕøöäÝ åæ B æáíÓ åäÇß
- ÃíøÉ ÏÇáÉ ÊõÏÚóì B() Ýí ÇáÕøöäÝ B. áã íÍÏË ÔíÁ.
+ áê PHP 3¬ èäÇ ÃêÉ ÈÇæêÉ ÊÊå åæÇÏÇÊçÇ áê ÇäåËÇä ÇäÙäèêñ.
+ ÇäâÇÙÏÉ áê PHP 3 çê: 'ÈÇæêÉ åÇ çê ÙÈÇÑÉ Ùæ ÏÇäÉ äçÇ æáÓ
+ ÇäÅÓå åËä ÇäÕñðæá.'. ÅÓå ÇäÕñðæá çè B èäêÓ çæÇã
+ ÃêñÉ ÏÇäÉ ÊïÏÙîé B() áê ÇäÕñðæá B. äå êÍÏË ÔêÁ.
</para>
<para>
- Êãø ÊÞæíã åÐÇ ÇáÃãÑ Ýí PHP 4 ÈÅÏÎÇá ÞÇÚÏÉ ÃÎÑì: ÅÐÇ áã íÊæÝÑ ÕöäÝñ ãÇ
- Úáì ÈÇäíÉ¡ ÝÅäøóå íÊã ãäÇÏÇÉ ÈÇäíÉ ÇáÕøöäÝ ÇáÞÇÚÏíø "base class"¡
- Åä æõÌöÏ. ÇáãËÇá ÇáÃÚáì íÄÏí Åáì ØÈÇÚÉ
- 'ÃäÇ ÈÇäíÉ A.<br />' Ýí PHP 4.
+ Êåñ Êâèêå çÐÇ ÇäÃåÑ áê PHP 4 ÈÅÏÎÇä âÇÙÏÉ ÃÎÑé: ÅÐÇ äå êÊèáÑ Õðæáì åÇ
+ Ùäé ÈÇæêɬ áÅæñîç êÊå åæÇÏÇÉ ÈÇæêÉ ÇäÕñðæá ÇäâÇÙÏêñ "base class"¬
+ Åæ èïÌðÏ. ÇäåËÇä ÇäÃÙäé êÄÏê Åäé ×ÈÇÙÉ
+ 'ÃæÇ ÈÇæêÉ A.<br />' áê PHP 4.
</para>
<informalexample>
@@ -433,13 +433,13 @@
{
function A()
{
- echo "ÃäÇ ÈÇäíÉ A.<br />\n";
+ echo "ÃæÇ ÈÇæêÉ A.<br />\n";
}
function B()
{
- echo "ÃäÇ ÏÇáÉ ÇÚÊíÇÏíøÉ ÊõÏúÚóì B Ýí ÇáÕøöäÝ A.<br />\n";
- echo "áÓÊ ÈÇäíÉ Ýí A.<br />\n";
+ echo "ÃæÇ ÏÇäÉ ÇÙÊêÇÏêñÉ ÊïÏòÙîé B áê ÇäÕñðæá A.<br />\n";
+ echo "äÓÊ ÈÇæêÉ áê A.<br />\n";
}
}
@@ -447,11 +447,11 @@
{
function C()
{
- echo "ÃäÇ ÏÇáÉ ÇÚÊíÇÏíøÉ.<br />\n";
+ echo "ÃæÇ ÏÇäÉ ÇÙÊêÇÏêñÉ.<br />\n";
}
}
-// ÓíÄÏí åÐÇ Åáì ãäÇÏÇÉ B() Úáì ÃäøåÇ ÈÇäíÉ.
+// ÓêÄÏê çÐÇ Åäé åæÇÏÇÉ B() Ùäé ÃæñçÇ ÈÇæêÉ.
$b = new B;
?>
]]>
@@ -459,43 +459,43 @@
</informalexample>
<para>
- Ýí PHP 3¡ ÇáÏøÇáÉ B() Ýí ÇáÕøöäÝ A ÓÊõÕÈöÍ ÝÌÃÉ
- ÈÇäíÉð Ýí ÇáÕøöäÝ B ÈÇáÑøÛã ãä ÚÏã ãÞÕæÏíÉ ÔíÁ ãä åÐÇ ÇáÞÈíá.
- ÇáÞÇÚÏÉ Ýí PHP 3 åí: 'ÈÇäíÉñ ãÇ åí ÏÇáÉ áåÇ äÝÓ
- ÇáÅÓã ãËá ÇáÕøöäÝ.'. áÇ ÊßÊÑË PHP 3 ÅÐÇ Êãø ÊÚÑíÝ ÇáÏøÇáÉ
- Ýí ÇáÕøöäÝ B Ãæ ÅÐÇ ÊãøÊ æÑÇËÊåÇ.
+ áê PHP 3¬ ÇäÏñÇäÉ B() áê ÇäÕñðæá A ÓÊïÕÈðÍ áÌÃÉ
+ ÈÇæêÉë áê ÇäÕñðæá B ÈÇäÑñÚå åæ ÙÏå åâÕèÏêÉ ÔêÁ åæ çÐÇ ÇäâÈêä.
+ ÇäâÇÙÏÉ áê PHP 3 çê: 'ÈÇæêÉì åÇ çê ÏÇäÉ äçÇ æáÓ
+ ÇäÅÓå åËä ÇäÕñðæá.'. äÇ ÊãÊÑË PHP 3 ÅÐÇ Êåñ ÊÙÑêá ÇäÏñÇäÉ
+ áê ÇäÕñðæá B Ãè ÅÐÇ ÊåñÊ èÑÇËÊçÇ.
</para>
<para>
- Êãø ÊÞæíã åÐÇ ÇáÃãÑ Ýí PHP 4 ÈÊÚÏíá ÇáÞÇÚÏÉ Åáì: 'ÈÇäíÉñ ãÇ
- åí ÏÇáÉ áåÇ äÝÓ ÇáÅÓã ãËá ÇáÕøöäÝ ÇáÐøí ÌÑì ÊÚÑíÝåÇ
- Èå.'. æåßÐÇ¡ ÝÅäøå ÈÜPHP 4¡ ÇáÕøöäÝ B áä íÊæÝÑ Úáì ÏÇáÉ ÈÇäíøÉ¡
- ÈãÈÇÏÑÉ ÐÇÊíøÉ¡ æÓÊÊã ãäÇÏÇÉ ÈÇäíÉ ÇáÕøöäÝ ÇáÞÇÚÏíø
- áíõØúÈóÚ 'ÃäÇ ÈÇäíÉ A.<br />'.
+ Êåñ Êâèêå çÐÇ ÇäÃåÑ áê PHP 4 ÈÊÙÏêä ÇäâÇÙÏÉ Åäé: 'ÈÇæêÉì åÇ
+ çê ÏÇäÉ äçÇ æáÓ ÇäÅÓå åËä ÇäÕñðæá ÇäÐñê ÌÑé ÊÙÑêáçÇ
+ Èç.'. èçãÐǬ áÅæñç ÈàPHP 4¬ ÇäÕñðæá B äæ êÊèáÑ Ùäé ÏÇäÉ ÈÇæêñɬ
+ ÈåÈÇÏÑÉ ÐÇÊêñɬ èÓÊÊå åæÇÏÇÉ ÈÇæêÉ ÇäÕñðæá ÇäâÇÙÏêñ
+ äêï×òÈîÙ 'ÃæÇ ÈÇæêÉ A.<br />'.
</para>
<caution>
<simpara>
- áÇ PHP 3 æáÇ PHP 4 ÊõäÇÏí ÈÇäíÇÊ ÇáÕøöäÝ ÇáÞÇÚÏíø
- ÂáíÇ ÇäØáÇÞÇð ãä ÈÇäíÉ ÕöäÝ ãõÔÊøóÞ. ÊÞÚ Úáì ÚÇÊöÞß
- ãÓÄæáíÉ äÔÑ äÏÇÁ ÇáÈÇäíÇÊ
- ÃÝÞíÇð ÍíË íáíÞ ÇáãÞÇã.
+ äÇ PHP 3 èäÇ PHP 4 ÊïæÇÏê ÈÇæêÇÊ ÇäÕñðæá ÇäâÇÙÏêñ
+ ÂäêÇ Çæ×äÇâÇë åæ ÈÇæêÉ Õðæá åïÔÊñîâ. ÊâÙ Ùäé ÙÇÊðâã
+ åÓÄèäêÉ æÔÑ æÏÇÁ ÇäÈÇæêÇÊ
+ ÃáâêÇë ÍêË êäêâ ÇäåâÇå.
</simpara>
</caution>
<note>
<simpara>
- áíÓÊ åäÇß åÇÏãÇÊ "destructors" Ýí PHP 3 Ãæ PHP 4. íãßäß ÇÓÊÎÏÇã
- <function>register_shutdown_function</function> ÈÏáÇ ãä Ðáß
- ÈÛÑÖ ãõÍÇßÇÉ ãõÚÙóã ÊÃËíÑÇÊ ÇáåÇÏãÇÊ.
+ äêÓÊ çæÇã çÇÏåÇÊ "destructors" áê PHP 3 Ãè PHP 4. êåãæã ÇÓÊÎÏÇå
+ <function>register_shutdown_function</function> ÈÏäÇ åæ Ðäã
+ ÈÚÑÖ åïÍÇãÇÉ åïÙØîå ÊÃËêÑÇÊ ÇäçÇÏåÇÊ.
</simpara>
</note>
<para>
- ÇáåÇÏãÇÊ åí ÏæÇá ÊÊã ãäÇÏÇÊåÇ ÂáíÇ
- ÚäÏ ÊÍØíã ßÇÆä ãÇ¡ ÅãÇ ÈæÇÓØÉ <function>unset</function>
- Ãæ ÈÈÓÇØÉ ÈÇáÎÑæÌ ãä ÇáãÏì "scope". áíÓÊ åäÇß åÇÏãÇÊ
- Ýí PHP.
+ ÇäçÇÏåÇÊ çê ÏèÇä ÊÊå åæÇÏÇÊçÇ ÂäêÇ
+ ÙæÏ ÊÍ×êå ãÇÆæ åǬ ÅåÇ ÈèÇÓ×É <function>unset</function>
+ Ãè ÈÈÓÇ×É ÈÇäÎÑèÌ åæ ÇäåÏé "scope". äêÓÊ çæÇã çÇÏåÇÊ
+ áê PHP.
</para>
</sect1>
@@ -504,15 +504,15 @@
<caution>
<simpara>
- The following is valid for PHP 4 and later only.
+ åÇ êÃÊê êÕäÍ áâ× äàPHP 4 èåÇ êäêçÇ.
</simpara>
</caution>
<para>
- Sometimes it is useful to refer to functions and variables
- in base classes or to refer to functions in classes that
- have not yet any instances. The :: operator is being used
- for this.
+ åæ ÇäåáêÏ ÃÍêÇæÇë ÇäÅÍÇäÉ Åäé ÏèÇä èåïÊÚêñðÑÇÊ
+ áê ÇäÃÕæÇá ÇäâÇÙÏêñÉ Ãè ÇäÅÍÇäÉ Åäé ÏèÇä áê ÃÕæÇá
+ äÇ ÊÊèáñÑ ÈÙÏ Ùäé Ãêñ åËêä. êïÓòÊîÎòÏîå åïÔÚñðä ::
+ äçÐÇ ÇäÚÑÖ.
</para>
<informalexample>
@@ -521,28 +521,28 @@
<?php
class A {
function example() {
- echo "I am the original function A::example().<br />\n";
+ echo "ÃæÇ ÇäÏñÇäÉ ÇäÃÕäêñÉ A::example().<br />\n";
}
}
class B extends A {
function example() {
- echo "I am the redefined function B::example().<br />\n";
+ echo "ÃæÇ ÇäÏñÇäÉ B::example()¬ ÇäåïÙÇÏ ÊÙÑêáçÇ.<br />\n";
A::example();
}
}
-// there is no object of class A.
-// this will print
-// I am the original function A::example().<br />
+// äêÓ çæÇã ãÇÆæ åæ ÇäÕñðæá A.
+// ÓêÄÏê çÐÇ Åäé ×ÈÇÙÉ
+// ÃæÇ ÇäÏñÇäÉ ÇäÃÕäêñîÉ A::example().<br />
A::example();
-// create an object of class B.
+// ÅæÔÇÁ ãÇÆæ åæ ÇäÕñðæá B.
$b = new B;
-// this will print
-// I am the redefined function B::example().<br />
-// I am the original function A::example().<br />
+// ÓêÄÏê çÐÇ Åäé ×ÈÇÙÉ
+// ÃæÇ ÇäÏñÇäÉ B::example()¬ ÇäåïÙÇÏ ÊÙÑêáçÇ.<br />
+// ÃæÇ ÇäÏñÇäÉ ÇäÃÕäêñÉ A::example().<br />
$b->example();
?>
]]>
@@ -550,36 +550,36 @@
</informalexample>
<para>
- The above example calls the function example() in
- class A, but there is no object of class A, so that
- we cannot write $a->example() or similar. Instead we
- call example() as a 'class function', that is, as a
- function of the class itself, not any object of that
- class.
+ êæÇÏê ÇäåËÇä ÇäÙäèêñ ÇäÏñÇäÉî example() áê
+ ÇäÕñðæá A äãæ äêÓ çæÇã ãÇÆæ åæ ÇäÕñðæá A¬ äÐäã
+ êÊÙÐÑ ÙäêæÇ ãÊÇÈÉ $a->example() Ãè åÇ êÔÈç ÈÐäã. ÈÏäÇ åæ Ðäã¬
+ ææÇÏê example() Ùäé ÃæñçÇ 'ÏÇäÉ Õðæá - class function'¬ Ãê¬
+ ãÏÇäÉ åæ ÇäÕñðæá æáÓç èäêÓ Ãê ãÇÆæ åæ çÐÇ
+ ÇäÕñðæá.
</para>
<para>
- There are class functions, but there are no class variables.
- In fact, there is no object at all at the time of the call.
- Thus, a class function may not use any object variables (but
- it can use local and global variables), and it may no use
- <varname>$this</varname> at all.
+ ÊèÌÏ ÏèÇä ääÃÕæÇá "class functions" äãæ äÇ ÊèÌÏ åïÊÚêñðÑÇÊ ääÃÕæÇá "class variables".
+ áê ÇäèÇâÙ¬ äêÓÊ çæÇã ãÇÆæ ÈÊÇÊÇë¬ ÎäÇä èçäÉ ÇäåæÇÏÇÉ.
+ ÈÇäÊñÇäê¬ äÇ ÊÓÊ×êÙ ÏÇäÉ Õðæá ÇÓÊÎÏÇå ÃêñÉ åïÊÚêñðÑÇÊ ãÇÆæ "object variables" (äãæ
+ ÊÓÊ×êÙ ÇÓÊÎÏÇå åïÊÚêñðÑÇÊ åÍäêñÉ èÔÇåäÉ)¬ èäêÓ ÈÇåãÇæçÇ ÇÓÊÎÏÇå
+ <varname>$this</varname> ÈÊÇÊÇë.
</para>
<para>
- In the above example, class B redefines the function example().
- The original definition in class A is shadowed
- and no longer available, unless you are referring specifically
- to the implementation of example() in class A using the
- ::-operator. Write A::example() to do this (in fact, you
- should be writing parent::example(), as shown in the next
- section).
+ áê ÇäåËÇä ÇäÙäèêñ¬ êâèå ÇäÕñðæá B ÈÅÙÇÏÉ ÊÙÑêá ÇäÏñÇäÉ example().
+ ÇäÊñÙÑêá ÇäÃÕäêñ áê ÇäÕñðæá A åïØîäñîä
+ èäå êÙïÏ åïÊÇÍÇë ÅäÇ ÅÐÇ ãæÊ ÈÕÏÏ ÇäÅÍÇäÉ ÎÕêÕÇ
+ Åäé ÅÏÑÇÌ "implementation" example() áê ÇäÕñðæá A ÈÇÓÊÎÏÇå
+ åïÔÚñðä ::. ÇãÊÈ A::example() ääâêÇå ÈçÐÇ (áê ÇäèÇâÙ¬
+ êÊèÌÈ Ùäêã ãÊÇÈÉ parent::example()¬ åËäåÇ çè åïèÖñîÍ áê Çäåâ×Ù
+ ÇäÂÊêñ).
</para>
<para>
- In this context, there is a current object and it may have object
- variables. Thus, when used from WITHIN an object function, you may use
- <varname>$this</varname> and object variables.
+ áê çÐÇ ÇäÓñðêÇ⬠çæÇã ãÇÆæ ÍÇäêñ èäÑÈåÇ äÏêç åïÊÚêñðÑÇÊ ãÇÆæêñÉ "object
+ variables". èçãÐǬ áÙæÏ ÇÓÊÎÏÇåç Çæ×äÇâÇ åæ ÏÇÎä ÏÇäÉ ãÇÆæêñÉ "object function"¬ êåãæã ÇÓÊÎÏÇå
+ <varname>$this</varname> èÇäåïÊÚêñðÑÇÊ ÇäãÇÆæêñÉ.
</para>
</sect1>
@@ -588,22 +588,22 @@
<title><literal>parent</literal></title>
<para>
- You may find yourself writing code that refers to
- variables and functions in base classes. This is
- particularly true if your derived class is a refinement
- or specialisation of code in your base class.
+ êåãæ Ãæ ÊÌÏ æáÓã ÈÕÏÏ ãÊÇÈÉ ÔêáÑÉ ÊïÍðêäï Åäé
+ åïÊÚêñðÑÇÊ èÏèÇä áê ÇäÃÕæÇá ÇäâÇÙÏêñÉ. êÕÏïâ çÐÇ
+ ÎÇÕÉ ÅÐÇ ãÇæ Õðæáã ÇäåïÔÊñîâ ÙÈÇÑÉ Ùæ ÊÕáêÉ
+ Ãè ÊÎÕêÕ ÔêáÑÉ áê Õðæáðã ÇäâÇÙÏêñ.
</para>
<para>
- Instead of using the literal name of the base class in your
- code, you should be using the special name
- <literal>parent</literal>, which refers to the name of your
- base class as given in the <literal>extends</literal>
- declaration of your class. By doing this, you avoid using the
- name of your base class in more than one place. Should
- your inheritance tree change during implementation, the
- change is easily made by simply changing the
- <literal>extends</literal> declaration of your class.
+ ÈÏäÇ åæ ÇÓÊÎÏÇå ÇäÅÓå ÇäÍÑáêñ ääÕðæá ÇäâÇÙÏêñ áê
+ ÔêáÑÊ㬠êÊèÌñîÈ Ùäêã ÇÓÊÎÏÇå ÇäÅÓå ÇäÎÇÕ
+ <literal>parent</literal> ÇäÐñê êïÍêä Åäé ÅÓå
+ Õðæáðã ÇäâÇÙÏêñ åËäåÇ çè åïÙò×îé áê ÊÕÑêÍ <literal>extends</literal>
+ ÇäÎÇÕ ÈÕðæáã. ÈÇäâêÇå ÈçÐǬ Êãèæ ÈÕÏÏ ÊÌæñïÈ ÇÓÊÎÏÇå
+ ÅÓå Õðæáã ÇäâÇÙÏêñ áê ÃãËÑ åæ åãÇæ. Åæ ×ÑÃ
+ èÊÚêñîÑÊ ÔÌÑÉ ÇäèÑÇËÉ "inheritance tree" áê ÇËæÇÁ ÇäÅÏÑÇÌ "implementation"¬ áÅæñ
+ ÇäÊñÚêêÑ êÍÏË ÈÓçèäÉ åæ ÎäÇä åÌÑÏ ÊÚêêÑ
+ ÊÕÑêÍ <literal>extends</literal> ÇäÎÇÕ ÈÕðæáã.
</para>
<informalexample>
@@ -612,20 +612,20 @@
<?php
class A {
function example() {
- echo "I am A::example() and provide basic functionality.<br />\n";
+ echo "ÃæÇ A::example() èÃèáñðÑ èØÇÆáêÉ âÇÙÏêñÉ.<br />\n";
}
}
class B extends A {
function example() {
- echo "I am B::example() and provide additional functionality.<br />\n";
+ echo "ÃæÇ B::example() èÃèáñðÑ èØÇÆáêÉ ÅÖÇáêñÉ.<br />\n";
parent::example();
}
}
$b = new B;
-// This will call B::example(), which will in turn call A::example().
+// ÓêïæÇÏê çÐÇ B::example() ÇäÐñê ÈÏèÑç ÓêïæÇÏê A::example().
$b->example();
?>
]]>
@@ -634,44 +634,44 @@
</sect1>
<sect1 id="language.oop.serialization">
- <title>Serializing objects - objects in sessions</title>
+ <title>ÓîäòÓîäîÉ "Serializing" ÇäãÇÆæÇÊ - ÇäãÇÆæÇÊ áê ÇäÌäÓÇÊ</title>
<note>
<simpara>
- In PHP 3, objects will lose their class association
- throughout the process of serialization and unserialization.
- The resulting variable is of type object, but has no class
- and no methods, thus it is pretty useless (it has become
- just like an array with a funny syntax).
+ áê PHP 3¬ ÊîáòâðÏï ÇäãÇÆæÇÊï ÊÔÇÑïãçÇ ÇäÕñðæáêñ "class association"
+ Ùäé ÇåÊÏÇÏ ÓêÑèÑÉ ÇäÓñäòÓîäîÉ "serialization" èÅÒÇäÉ ÇäÓñäòÓîäîÉ "unserialization".
+ ÇäåïÊÚêñðÑÉ ÇäÍÇÕðäÉ çê åæ æèÙ ÇäãÇÆæÇÊ äãæñçÇ äÇ ÊÊèáîÑ Ùäé Õðæá
+ èäÇ Ùäé åæÇçÌ "methods"¬ èçãÐÇ ÃÕÈÍ ÇäÃåÑ Ïèæ áÇÆÏÉ ÊïÐãîÑ (ÃÕÈÍ
+ ãåïÌÑñîÏ åÕáèáÉ ÐÇÊ ÕðêÇÚÉ ÚÑêÈÉ).
</simpara>
</note>
<caution>
<simpara>
- The following information is valid for PHP 4 only.
+ ÇäåÙäèåÇÊ ÇäÊñÇäêñÉ ÊÕäïÍ åÙ PHP 4 áâ×.
</simpara>
</caution>
<para>
- <function>serialize</function> returns a string containing a
- byte-stream representation of any value that can be stored in
- PHP. <function>unserialize</function> can use this string to
- recreate the original variable values. Using serialize to
- save an object will save all variables in an object. The
- functions in an object will not be saved, only the name of
- the class.
+ ÊïÑÌðÙï <function>serialize</function> ÓðäÓðäÉ æÕêñîÉ "string" ÊÊÖåæ
+ ÊåËêäÇ Ïáâê-ÇäÈÇêÊÇÊ "byte-stream representation" äÃêñÉ âêåÉ êåãæ ÍáØçÇ áê
+ PHP. êåãæ äà<function>unserialize</function> ÇÓÊÎÏÇå çÐç ÇäÓñÄäÓäÉ ÇäæñÕêñÉ
+ äÅÙÇÏÉ ÇæÔÇÁ âêå ÇäåïÊÚêñðÑÉ ÇäÃÕäêñîÉ. Åæñ ÇÓÊÎÏÇå serialize ÈÚÑÖ
+ ÍáØ ãÇÆæ åÇ êÄÏê Åäé ÍáØ ãÇáÉ ÇäåïÊÚêñðÑÇÊ áê ãÇÆæí åÇ. äæ
+ êÊå ÍáØ ÇäÏñèÇä ÇäåÊèÇÌÏÉ áê ãÇÆæ åǬ áâ× ÅÓå
+ ÇäÕñðæá.
</para>
<para>
- In order to be able to <function>unserialize</function> an object, the
- class of that object needs to be defined. That is, if you have an object
- <varname>$a</varname> of class A on page1.php and serialize this, you'll
- get a string that refers to class A and contains all values of variabled
- contained in <varname>$a</varname>. If you want to be able to unserialize
- this on page2.php, recreating <varname>$a</varname> of class A, the
- definition of class A must be present in page2.php. This can be done for
- example by storing the class definition of class A in an include file and
- including this file in both page1.php and page2.php.
+ ÈÚÑÖ ÇäÊïåãñïæ åæ ÅÒÇäÉ ÓîäòÓîäîÉ "<function>unserialize</function>" ãÇÆæí åǬ êÍÊÇÌ
+ Õðæá çÐÇ ÇäãÇÆæ äÃæ êïÙÑñîá. ÈåÙæé Ãæñç ÅÐÇ ãÇæ äÏêã ãÇÆæì åÇ
+ <varname>$a</varname> åæ ÇäÕñðæá A Ùäé safha1.php èâïåÊî ÈÓîäòÓîäîÊðçð "serialize"¬ áÅæñîã
+ ÓÊÍÕïä Ùäé ÓðäòÓðäîÉ æÕêñîÉ "string" ÊïÍêäï Åäé ÇäÕñðæá A èÊÍÊèê ãÇáÉ âêå ÇäåïÊÚêñðÑÇÊ
+ ÇäåïÍÊèÇÉ áê <varname>$a</varname>. ÅÐÇ ÑÚÈÊ áê Ãæ ÊÊåãæ åæ ÅÒÇäÉ ÓîäòÓîäîÉ "unserialize"
+ çÐÇ Ùäé safha2.php¬ ÈÅÙÇÏÉ ÇæÔÇÁ <varname>$a</varname> åæ ÇäÕñðæá A¬ áÅæñ
+ ÊÙÑêá ÇäÕñðæá A êÌÈ Ãæ êãèæ ÍÇÖÑÇ áê safha2.php. êåãæ ÇäâêÇå ÈçÐǬ Ùäé ÓÈêä
+ ÇäåËÇä¬ åæ ÎäÇä ÍáØ ÊÙÑêá ÇäÕñðæá ÇäÎÇÕ ÈÇäÕñðæá A áê åäá ÊÖåêæêñ "include file"
+ èÊÖåêæ çÐÇ Çäåäá áê ãäñ åæ safha1.php è safha2.php.
</para>
<informalexample>
@@ -688,26 +688,26 @@
}
}
-// page1.php:
+// safha1.php:
include("classa.inc");
$a = new A;
$s = serialize($a);
- // store $s somewhere where page2.php can find it.
+ // ÍáØ $s áê åãÇæ åÇ ÍêË êåãæ äà safha2.php ÅêÌÇÏç.
$fp = fopen("store", "w");
fwrite($fp, $s);
fclose($fp);
-// page2.php:
+// safha2.php:
- // this is needed for the unserialize to work properly.
+ // çæÇã ÍÇÌÉ äçÐÇ ÍÊé ÊÙåä ÅÒÇäÉ ÇäÓîäòÓîäîÉ ÈÔãä ÕÍêÍ.
include("classa.inc");
$s = implode("", @file("store"));
$a = unserialize($s);
- // now use the function show_one() of the $a object.
+ // ÇäÂæ¬ ÇÓÊÎÏå ÇäÏñÇäÉ show_one() ÇäÎÇÕÉ ÈÇäãÇÆðæ $a .
$a->show_one();
?>
]]>
@@ -715,72 +715,72 @@
</informalexample>
<para>
- If you are using sessions and use <function>session_register</function>
- to register objects, these objects are serialized automatically
- at the end of each PHP page, and are unserialized automatically on
- each of the following pages. This basically means that these objects
- can show up on any of your pages once they become part of your
- session.
+ ÅÐÇ ãïæÊ ÈÕÏÏ ÇÓÊÎÏÇå ÇäÌäÓÇÊ èãÐÇ <function>session_register</function>
+ ÈÚÑÖ ÊÓÌêä ÇäãÇÆðæÇʬ áÅæñç ÊÊå ÓîäòÓîäîÉ çÐç ÇäãÇÆðæÇʬ ÈÕèÑÉ Âäêñîɬ
+ ÙæÏ æçÇêÉ ãäñ ÕáÍÉ PHP èãÐäã ÊÊå ÅÒÇäÉ ÓîäòÓîäîÊçǬ ÈÕèÑÉ Âäêñîɬ
+ ÙæÏ ãäñ åæ ÇäÕñäÅÍÇÊ ÇäÊñÇäêñîÉ. êÙæê çÐǬ ÌèçÑêÇë¬ Ãæñ çÐç ÇäãÇÆæÇÊ
+ êåãæçÇ ÇäØñïçèÑ áê Ãêñ åæ ÕáÍÇÊã ÈåÌÑÏ Ãæ ÊïÕÈÍ ÌÒÁÇë åæ
+ ÌäÓÊã.
</para>
<para>
- It is strongly recommended that you include the class
- definitions of all such registered objects on all of your
- pages, even if you do not actually use these classes on all
- of your pages. If you don't and an object is being
- unserialized without its class definition being present, it
- will lose its class association and become an object of class
- <literal>stdClass</literal> without any functions available
- at all, that is, it will become quite useless.
+ êïèÕîé ÈâèÉ Ãæ Êâèå ÈÊÖåêæ ÇäÊñîÙÑêáÇÊ
+ ÇäÕñðæáêñîÉ ÇäÎÇÕÉ ÈåËä çÐç ÇäãÇÆæÇÊ ÇäåïÓÌñîäɬ ãÇáÉë¬ Ùäé ãäñ
+ ÕáÍÇÊã ÍÊé èÅæ äå Êãæ ÈÕÏÏ ÇÓÊÎÏÇå çÐç ÇäÃÕæÇᬠÍÇäêǬ Ùäé ãÇáÉ
+ ÕáÍÇÊã. ÅÐÇ äå Êâïå ÈÐäã èÍÏË Ãæ ÃÒêäÊ ÓîäòÓîäîÉ ãÇÆæ
+ åæ Ïèæ ÍÖèÑ ÊÙÑêáç ÇäÕñðæáêñ¬ áÅæñ
+ ÓêáâðÏ ÊÔÇÑãç ÇäÕñðæáêñ "class association" èêïÕÈͬ ãïäñðêÇë¬ ãÇÆæÇë åæ ÇäÕñðæá
+ <literal>stdClass</literal> åæ Ïèæ ÃêñÉ ÏèÇä åïÊÇÍÉ
+ ååÇ êÙæê Ãæñç ÓêÕÈÍ ÚêÑ åïáêÏí ÈÊÇÊÇë.
</para>
<para>
- So if in the example above <varname>$a</varname> became part of a session
- by running <literal>session_register("a")</literal>, you should include the
- file <literal>classa.inc</literal> on all of your pages, not only page1.php
- and page2.php.
+ ÈÇäÊñÇäê¬ ÅÐÇ ÃÕÈÍ <varname>$a</varname>¬ áê ÇäåËÇä ÇäÙïäèêñ¬ ÌÒÁÇë åæ ÌäÓÉí åÇ
+ åæ ÎäÇä ÊÔÚêä <literal>session_register("a")</literal>¬ áÅæñîç êÊèÌñîÈ Ùäêã ÊÖåêæ
+ Çäåäá <literal>classa.inc</literal> ÈãÇáÉ ÕáÍÇÊã èäêÓ áâ× safha1.php
+ è safha2.php.
</para>
</sect1>
<sect1 id="language.oop.magic-functions">
- <title>The magic functions <literal>__sleep</literal> and <literal>__wakeup</literal></title>
+ <title>ÇäÏñèÇä ÇäÓñðÍÑêñîÉ <literal>__sleep</literal> è <literal>__wakeup</literal></title>
<para>
- <function>serialize</function> checks if your class has a function with
- the magic name <literal>__sleep</literal>. If so, that function is
- being run prior to any serialization. It can clean up the object
- and is supposed to return an array with the names of all variables
- of that object that should be serialized.
+ ÊÊáâñîÏ <function>serialize</function> ÅÐÇ ãÇæ Õðæáã êÊèáñîÑ Ùäé Ùäé ÏÇäÉ ÊåÊäã
+ ÇäÅÓå ÇäÓñðÍÑêñ <literal>__sleep</literal>. Åæ ãÇæ ÇäÃåÑ ãÐä㬠áÅæñîç êÊå ÊÔÚêä çÐç ÇäÏñÇäÉ
+ âÈä ÃêñÉ ÙåäêÉ ÓîäòÓîäîÉ "serialization". êåãæçÇ ÊæØêá ÇäãÇÆæ
+ èêïáÊîÑîÖ ÃæñîçÇ ÓÊïÑÌðÙï åÕáèáÉë ÈÃÓåÇÁ ãÇáÉ åïÊÚêñðÑÇÊ
+ çÐÇ ÇäãÇÆæ ÇäåïÊèÌñðÈ ÓîäòÓîäîÊçÇ.
</para>
<para>
- The intended use of <literal>__sleep</literal> is to close any
- database connections that object may have, committing pending
- data or perform similar cleanup tasks. Also, the function is
- useful if you have very large objects which need not be
- saved completely.
+ ÇäÇÓÊÎÏÇå ÇäåïÈòÊîÚîé åæ <literal>__sleep</literal> çè ÅÚäÇâ ÃêñîÉ
+ ÇÊÕÇäÇÊ ÈÇäâèÇÙÏ ÇäÈêÇæêñÉ êåãæ Ãæ êåÊäãçÇ çÐÇ ÇäãÇÆæ¬ ÊÙçñïÏ ÇäÈêÇæÇÊ
+ ÇäÙÇäðâîÉ Ãè ÃÏÇÁ åçÇå ÊæØêá ååÇËäÉ. ãÐä㬠áÅæñ ÇäÏñÇäÉ Êãèæ
+ åïáêÏÉ ÅÐÇ ãæÊ ÊåÊäã ãÇÆæÇÊ ãÈêÑÉ ÌÏÇë äêÓÊ ÈÍÇÌÉ Ãæ
+ ÊïÍáîØî ÈÊåÇåçÇ.
</para>
<para>
- Conversely, <function>unserialize</function> checks for the
- presence of a function with the magic name
- <literal>__wakeup</literal>. If present, this function can
- reconstruct any resources that object may have.
+ ÙãÓêÇë¬ ÊÊáâñîÏ <function>unserialize</function>
+ èÌèÏ ÏÇäÉ ÊåÊäã ÇäÅÓå ÇäÓñðÍÑêñ
+ <literal>__wakeup</literal>. Åæ èïÌðϬ áÅæñ çÐç ÇäÏñÇäÉ êãèæ ÈÇåãÇæçÇ
+ ÅÙÇÏÉ ÈæÇÁ ÃêñÉ åèÇÑÏ êåÊäãçÇ çÐÇ ÇäãÇÆæ.
</para>
<para>
- The intended use of <literal>__wakeup</literal> is to
- reestablish any database connections that may have been lost
- during serialization and perform other reinitialization
- tasks.
+ ÇäÇÓÊÎÏÇå ÇäåïÈÊîÚîé åæ <literal>__wakeup</literal> çè
+ ÅÙÇÏÉ ÊÃÓêÓ ÃêñÉ ÇÊÕÇäÇÊ ÈÇäâèÇÙÏ ÇäÈêÇæêñÉ êåãæ ÃæñçÇ áïâðÏîÊ
+ áê ÃËæÇÁ ÙåäêÉ ÇäÓîäòÓîäîÉ èÊÃÏêÉ åçÇå ÃÎÑé
+ äÅÒÇäÉ ÇäÓîäòÓîäîÉ.
</para>
</sect1>
<sect1 id="language.oop.newref">
- <title>References inside the constructor</title>
+ <title>ÇäÅÍÇäÇÊ Öåæ ÇäÈÇæêÉ "References inside the constructor"</title>
<para>
- Creating references within the constructor can lead to confusing
- results. This tutorial-like section helps you to avoid problems.
+ êåãæ äÇæÔÇÁ ÇäÅÍÇäÇÊ Öåæ ÇäÈÇæêÉ Ãæ êÄÏê Åäé ÊÔèêÔ
+ ÇäæñîÊÇÆÌ. çÐÇ ÇäáÕä¬ ÇäÔñîÈêç ÈÇäÏñÑÓ¬ êÓÇÙÏã Ùäé ÊáÇÏê ÇäåÔÇãä.
<informalexample>
<programlisting role="php">
@@ -788,12 +788,12 @@
<?php
class Foo {
function Foo($name) {
- // create a reference inside the global array $globalref
+ // ÅæÔÇÁ ÅÍÇäÉ Öåæ ÇäåÕáèáÉ ÇäÔñîÇåðäÉ $globalref
global $globalref;
$globalref[] = &$this;
- // set name to passed value
+ // ÊÙêêæ ÅÓå äÃÌä ÇäâêåÉ ÇäåïåîÑñîÑîÉ
$this->setName($name);
- // and put it out
+ // èÇÓÊÎÑÇÌçÇ
$this->echoName();
}
@@ -812,92 +812,92 @@
</para>
<para>
- Let us check out if there is a difference between
- <varname>$bar1</varname> which has been created using
- the copy <literal>=</literal> operator and
- <varname>$bar2</varname> which has been created using
- the reference <literal>=&</literal> operator...
+ äæÊáâñîÏ ÇäÂæ Åæ ãÇæ çæÇã áÑâ Èêæ
+ <varname>$bar1</varname> ÇäÊñê ÃïæÔðÆîÊ ÈÇÓÊÎÏÇå
+ åïÔÚñðä ÇäæñîÓÎ <literal>=</literal>
+ è <varname>$bar2</varname> ÇäÊñê ÃïæÔðÆîÊ ÈÇÓÊÎÏÇå
+ åïÔÚñðä ÇäÅÍÇäÉ <literal>=&</literal> ...
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-$bar1 = new Foo('set in constructor');
+$bar1 = new Foo('åïÙêñîæ áê ÇäÈÇæêÉ');
$bar1->echoName();
$globalref[0]->echoName();
-/* output:
-set in constructor
-set in constructor
-set in constructor */
+/* ÇäåïÎòÑîÌ:
+åïÙêñîæ áê ÇäÈÇæêÉ
+åïÙêñîæ áê ÇäÈÇæêÉ
+åïÙêñîæ áê ÇäÈÇæêÉ */
-$bar2 =& new Foo('set in constructor');
+$bar2 =& new Foo('åïÙêñîæ áê ÇäÈÇæêÉ');
$bar2->echoName();
$globalref[1]->echoName();
-/* output:
-set in constructor
-set in constructor
-set in constructor */
+/* ÇäåïÎòÑîÌ:
+åïÙêñîæ áê ÇäÈÇæêÉ
+åïÙêñîæ áê ÇäÈÇæêÉ
+åïÙêñîæ áê ÇäÈÇæêÉ */
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
- Apparently there is no difference, but in fact there is a
- very significant one: <varname>$bar1</varname> and
- <varname>$globalref[0]</varname> are _NOT_ referenced, they
- are NOT the same variable. This is because "new" does not
- return a reference by default, instead it returns a copy.
+ ØÇçÑêÇë¬ äêÓ çæÇã åæ áÑâ äãæ¬ áê ÇäèÇâÙ¬ çæÇã
+ áÑâ ÌÏñ åïÙÊÈîÑ: <varname>$bar1</varname> è
+ <varname>$globalref[0]</varname> _ÚêÑ_ åïÍÇäîÉ "referenced"¬ ÇäÃåÑ
+ äÇ êÊÙäñîâ ÈæáÓ ÇäåïÊÚêñðÑÉ. çÐÇ äÃæñ "new" äÇ
+ ÊïÑÌðÙï ÅÍÇäɬ ÈÔãä ÇáÊÑÇÖêñ¬ ÈÏäÇ åæ Ðä㬠ÊïÑÌðÙ æïÓÎîÉ.
<note>
<simpara>
- There is no performance loss (since PHP 4 and up use reference
- counting) returning copies instead of references. On the
- contrary it is most often better to simply work with copies
- instead of references, because creating references takes some
- time where creating copies virtually takes no time (unless none
- of them is a large array or object and one of them gets changed
- and the other(s) one(s) subsequently, then it would be wise to
- use references to change them all concurrently).
+ äêÓ çæÇã åæ áâÏÇæ áê ÇäÃÏÇÁ "performance loss" (ÈÇÙÊÈÇÑ Ãæñ PHP 4¬ èÃÍÏˬ ÊÓÊÎÏå ÙÏñ ÇäÅÍÇäÇÊ "reference
+ counting") åïÑòÌðÙîÉë æïÓÎÇë ÈÏäÇ åæ ÇäÅÍÇäÇÊ. Ùäé
+ ÇäÙãÓ¬ åæ ÇäÃáÖä ÈãËêÑ ÇäÙåä ÈÈÓÇ×É ÈæÓÎ
+ ÈÏäÇ åæ ÇäÅÍÇäÇÊ äÃæñ ÅæÔÇÁ ÇäÅÍÇäÇÊ êÍÊÇÌ äÈÙÖ
+ ÇäèâÊ ÍêË Ãæñ ÅæÔÇÁ æïÓÎ äÇ êÃÎЬ ØÇçÑêÇë¬ Ãêñ èâÊ (ÅäÇ ÅÐÇ
+ äå Êãæ ÅÍÏÇçÇ ÙÈÇÑÉ Ùæ åÕáèáÉ Ãè ãÇÆæÇ ãÈêÑÇë èÊÚêñîÑÊ ÅÍÏÇçÇ
+ áêåÇ ÊÚêñîÑÊ ÇäÃÎÑé(ÇäÃÎÑêÇÊ) ÊðÈÇÙÇë¬ ÍêæçÇ êãèæ åæ ÇäÃÙâä
+ ÇÓÊÎÏÇå ÇäÅÍÇäÇÊ ÈÚÑÖ ÊÚêêÑçÇ ãäñçǬ ÈÔãä Âæêñ).
</simpara>
</note>
- To prove what is written above let us watch the code below.
+ äÊèÖêÍ åÇ ãïÊðÈî áê ÇäÃÙäé¬ ääæØÑ Åäé ÇäÔñðêáÑÉ áê ÇäÃÓáä.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
-// now we will change the name. what do you expect?
-// you could expect that both $bar1 and $globalref[0] change their names...
-$bar1->setName('set from outside');
+// ÇäÂæ¬ ÓæïÚêñðÑ ÇäÅÓå. åÇÐÇ ÊÊèâñîÙ¿
+// êåãæ Ãæ ÊÊèâñîÙ Ãæñ ãäÇ åæ $bar1 è $globalref[0] ÓÊïÚêñðÑ ÃÓåÇÁçÇ...
+$bar1->setName('åïÙêñîæ Åæ×äÇâÇ åæ ÇäÎÇÑÌ');
-// as mentioned before this is not the case.
+// åËäåÇ ÃïÔêÑ Åäêç åæ âÈä¬ äêÓ ÇäÃåÑ ãÐäã ÇäÂæ.
$bar1->echoName();
$globalref[0]->echoName();
-/* output:
-set from outside
-set in constructor */
+/* ÇäåïÎòÑîÌ:
+åïÙêñîæ Åæ×äÇâÇ åæ ÇäÎÇÑÌ
+åïÙêñîæ áê ÇäÈÇæêÉ */
-// let us see what is different with $bar2 and $globalref[1]
-$bar2->setName('set from outside');
+// äæÑé ÇäÂæ åÇ çè åïÎÊäá Èêæ $bar2 è $globalref[1]
+$bar2->setName('åïÙêñîæ Åæ×äÇâÇ åæ ÇäÎÇÑÌ');
-// luckily they are not only equal, they are the same variable
-// thus $bar2->name and $globalref[1]->name are the same too
+// äÍÓæ ÇäÍØ¬ çê äêÓÊ áâ× åÊÓÇèêñÉ Èä èãÐäã çê ÙÈÇÑÉ Ùæ æáÓ ÇäåïÊÚêñðÑÉ.
+// èçãÐǬ áÅæñ $bar2->name è $globalref[1]->name çê æáÓçÇ ÃêÖÇë
$bar2->echoName();
$globalref[1]->echoName();
-/* output:
-set from outside
-set from outside */
+/* ÇäåïÎòÑîÌ:
+åïÙêñîæ Åæ×äÇâÇ åæ ÇäÎÇÑÌ
+åïÙêñîæ Åæ×äÇâÇ åæ ÇäÎÇÑÌ */
?>
]]>
</programlisting>
</informalexample>
</para>
<para>
- Another final example, try to understand it.
+ åËÇä ÃÎêÑ ÂÎѬ ÍÇèä Êáçñåç.
<informalexample>
<programlisting role="php">
@@ -906,7 +906,7 @@
class A {
function A($i) {
$this->value = $i;
- // try to figure out why we do not need a reference here
+ // ÍÇèä åÙÑáÉ äåÇÐÇ äÇ æÍÊÇÌ Åäé ÅÍÇäÉ çæÇ
$this->b = new B($this);
}
@@ -930,8 +930,8 @@
}
}
-// try to understand why using a simple copy here would yield
-// in an undesired result in the *-marked line
+// ÍÇèä áçå äåÇÐÇ êåãæ äÇÓÊÎÏÇå æÓÎÉ ÈÓê×É çæÇ Ãæ êÄÏê
+// Åäé æÊêÌÉ ÚêÑ åïÍÈÐñîÉ áê ÇäÓñ×Ñ ÇäåïÙäñîå Èà *
$a =& new A(10);
$a->createRef();
@@ -949,7 +949,7 @@
]]>
</programlisting>
<para>
- This example will output:
+ ÓêÓÊÕÏÑ ÇäåËÇä ÇäÊñÇäêñ ÇäåïÎòÑîÌ:
</para>
<screen>
<![CDATA[
@@ -966,17 +966,17 @@
</sect1>
<sect1 id="language.oop.object-comparison-php4">
- <title>Comparing objects in PHP 4</title>
+ <title>åïâÇÑæÉ ÇäãÇÆæÇÊ áê PHP 4</title>
<para>
- In PHP 4, objects are compared in a very simple manner, namely: Two object
- instances are equal if they have the same attributes and values, and are
- instances of the same class. Similar rules are applied when comparing two
- objects using the identity operator (<literal>===</literal>).
+ áê PHP 4¬ ÊÊå ÇäåïâÇÑæÉ Èêæ ÇäãÇÆæÇÊ È×ÑêâÉ ÌÏ ÈÓê×ɬ çê: êãèæ åËêäÇ ãÇÆæêæ
+ "object instances" åïÊÓÇèêñêæ ÅÐÇ ãÇæÇ êåÊäãÇæ æáÓ ÇäÓñðåÇÊ èÇäâðêå èãÇæÇ
+ åËêäÇæ åæ æáÓ ÇäÕñðæá. Êæ×Èâ æáÓ ÇäâèÇÙÏ ÙæÏ ÇäåâÇÑæÉ Èêæ
+ ÇäãÇÆæÇÊ ÙæÏ ÇÓÊÎÏÇå åïÔÚñðä ÇäçèêÉ "identity operator" (<literal>===</literal>).
</para>
<para>
- If we were to execute the code in the example below:
+ ÅÐÇ ãæÇ ÈÕÏÏ ÊæáêÐ ÇäÔñðêáÑÉ áê ÇäåËÇä ÇäÓñïäêñ:
<example>
- <title>Example of object comparison in PHP 4</title>
+ <title>åËÇä Ùæ ÇäåâÇÑæÉ Èêæ ÇäãÇÆæÇÊ áê PHP 4</title>
<programlisting role='php'>
<![CDATA[
<?php
@@ -1020,13 +1020,13 @@
$r = new SwitchableFlag();
-echo "Compare instances created with the same parameters\n";
+echo "åïâÇÑæÉ åËêäÇÊ åïæÔîÃîÉ ÈæáÓ ÇäåîÙòäîåîÇÊ\n";
compareObjects($o, $q);
-echo "\nCompare instances created with different parameters\n";
+echo "\nåïâÇÑæÉ åîËêäÇÊ åïæÔîÃîÉ ÈåîÙòäîåîÇÊ åïÎÊäáÉ\n";
compareObjects($o, $p);
-echo "\nCompare an instance of a parent class with one from a subclass\n";
+echo "\nåâÇÑæÉ åËêä åæ Õðæá èÇäðÏ åÙ åËêä åæ Õðæá áÑÙêñ\n";
compareObjects($o, $r);
?>
]]>
@@ -1034,34 +1034,34 @@
</example>
We will see:
<screen>
-Compare instances created with the same parameters
+åâÇÑæÉ åËêäÇÊ åïæÔîÇîÉ ÈæáÓ ÇäåîÙòäîåîÇÊ
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
-Compare instances created with different parameters
+åâÇÑæÉ åËêäÇÊ åïæÔîÇîÉ ÈåîÙòäîåîÇÊ åïÎÊäáÉ
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
-Compare an instance of a parent class with one from a subclass
+åâÇÑæÉ åËêä åæ Õðæá èÇäðÏ åÙ åËêä åæ Õðæá áÑÙêñ
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
o1 !== o2 : TRUE
</screen>
- Which is the output we will expect to obtain given the comparison rules
- above. Only instances with the same values for their attributes and from the same
- class are considered equal and identical.
+ èçè ÇäåïÎòÑîÌ ÇäÐñê æÊèâñÙç ääÍÕèä ÈåïâÊÖé âèÇÙÏ ÇäåâÇÑæÉ¬
+ ÇäÊñê áê ÇäÃÙäé. áâ× ÇäåËêäÇÊ ÇäåÇäðãÉ äæáÓ Çäâêå ÇäÎÇÕÉ ÈÓðåÇÊçÇ èåæ æáÓ
+ ÇäÕñðæá çê ÇäÊñê ÊïÙÊîÈîÑ åÊÓÇèêñÉ èåïÊÔÇÈçÉ.
</para>
<para>
- Even in the cases where we have object composition, the same comparison
- rules apply. In the example below we create a container class that stores
- an associative array of <classname>Flag</classname> objects.
+ ÍÊé áê ÇäÍÇäÇÊ ÇäÊñê æåÊäã áêçÇ ÊÑãêÈÇë ãÇÆæÇÊêñÇë "object composition"¬ Êæ×Èâ æáÓ
+ âèÇÙÏ ÇäåâÇÑæÉ. áê ÇäåËÇä ÇäÓñïáäêñ¬ ææÔÆ ÕðæáÇë ÍÇèêñÇë "container class" êâèå ÈÍáØ
+ åÕáèáÉ ÊÔÇÑãêñÉ åæ ãÇÆæÇÊ <classname>Flag</classname>.
<example>
- <title>Compound object comparisons in PHP 4</title>
+ <title>ÇäåâÇÑæÉ Èêæ ãÇÆæÇÊ åïÑãñîÈîÉ áê PHP 4</title>
<programlisting role='php'>
<![CDATA[
<?php
@@ -1090,24 +1090,24 @@
$v = new FlagSet(array('flag1'=>$q, 'flag2'=>$p));
$w = new FlagSet(array('flag1'=>$q));
-echo "\nComposite objects u(o,p) and v(q,p)\n";
+echo "\nãÇÆæÇÊ åïÑãñîÈîÉ u(o,p) è v(q,p)\n";
compareObjects($u, $v);
-echo "\nu(o,p) and w(q)\n";
+echo "\nu(o,p) è w(q)\n";
compareObjects($u, $w);
?>
]]>
</programlisting>
</example>
- Which gives the expected output:
+ åÇ êïÙ×ê ÇäåïÎòÑîÌ ÇäåïÊèâñîÙ:
<screen>
-Composite objects u(o,p) and v(q,p)
+ÇäãÇÆæÇÊ ÇäåïÑãñîÈîÉ u(o,p) è v(q,p)
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
-u(o,p) and w(q)
+u(o,p) è w(q)
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
@@ -1117,28 +1117,28 @@
</sect1>
<sect1 id="language.oop.object-comparison-php5">
- <title>Comparing objects in PHP 5</title>
+ <title>åâÇÑæÉ ÇäãÇÆæÇÊ áê PHP 5</title>
&warn.experimental;
<para>
- In PHP 5, object comparison is a more complicated than in PHP 4 and more
- in accordance to what one will expect from an Object Oriented Language
- (not that PHP 5 is such a language).
+ áê PHP 5¬ ÊÊÓñðå åâÇÑæÉ ÇäãÇÆæÇÊ ÈÇäÊñÙâêñÏ ÇäÒñÇÆÏ åâÇÑæÉ ÈàPHP 4 èÃãËÑ
+ èáâÇë äåÇ êÊèâñÙç ÇäåÑÁ åæ äÚÉ ãÇÆæêñÉ ÇäåæÍé "Object Oriented Language"
+ (äêÓ äÃæñ PHP 5 çê åËä çÐç ÇääñïÚÉ).
</para>
<para>
- When using the comparison operator (<literal>==</literal>),
- object variables are compared in a simple manner, namely: Two object
- instances are equal if they have the same attributes and values, and are
- instances of the same class.
+ ÙæÏ ÇÓÊÎÏÇå åïÔÚñðä ÇäåâÇÑæÉ (<literal>==</literal>)¬
+ áÅæñç ÊÊå ÇäåâÇÑæÉ Èêæ ÇäåïÊÚêñðÑÇÊ ÇäãÇÆæêñîÉ È×ÑêâÉ ÈÓê×ɬ çê: êãèæ åËêäÇ ãÇÆæêæ
+ åïÊÓÇèêñêæ ÅÐÇ ãÇæÇ êåÊäãÇæ æáÓ ÇäÓñðåÇÊ èÇäâêå èãÇæÇ
+ åËêäêæ åæ æáÓ ÇäÕñðæá.
</para>
<para>
- On the other hand, when using the identity operator (<literal>===</literal>),
- object variables are identical if and only if they refer to the same
- instance of the same class.
+ åæ ÌçÉ ÃÎÑé¬ ÙæÏ ÇÓÊÎÏÇå åïÔÚñðä ÇäçèêÉ (<literal>===</literal>)¬
+ Êãèæ ÇäåïÊÚêñðÑÇÊ ÇäãÇÆæêñîÉ åïÊÔÇÈçÉ ÅÐÇ èáâ× ÅÐÇ ãÇæÊ ÊïÍêä Åäé æáÓ
+ ÇäåËêä åæ æáÓ ÇäÕñðæá.
</para>
<para>
- An example will clarify these rules.
+ åËÇä äÊèÖêÍ çÐç ÇäâèÇÙÏ.
<example>
- <title>Example of object comparison in PHP 5</title>
+ <title>åËÇä Ùæ åâÇÑæÉ ÇäãÇÆæÇÊ "object comparison" áê PHP 5</title>
<programlisting role='php'>
<![CDATA[
<?php
@@ -1178,33 +1178,33 @@
$q = $o;
$r = new OtherFlag();
-echo "Two instances of the same class\n";
+echo "åËêäêæ åæ æáÓ ÇäÕñðæá\n";
compareObjects($o, $p);
-echo "\nTwo references to the same instance\n";
+echo "\nÅÍÇäÊêæ äæáÓ ÇäåËêä\n";
compareObjects($o, $q);
-echo "\nInstances of two different classes\n";
+echo "\nåËêäÇÊ åæ Õðæáêæ åïÎÊäáêæ\n";
compareObjects($o, $r);
?>
]]>
</programlisting>
</example>
- This example will output:
+ çÐÇ ÇäåËÇä ÓêÓÊÕÏÑ ÇäåïÎòÑîÌ:
<screen>
-Two instances of the same class
+åËêäêæ åæ æáÓ ÇäÕñðæá
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : FALSE
o1 !== o2 : TRUE
-Two references to the same instance
+ÅÍÇäÊêæ äæáÓ ÇäåËêä
o1 == o2 : TRUE
o1 != o2 : FALSE
o1 === o2 : TRUE
o1 !== o2 : FALSE
-Instances of two different classes
+åËêäÇÊ åæ Õðæáêæ åïÎÊäáêæ
o1 == o2 : FALSE
o1 != o2 : TRUE
o1 === o2 : FALSE
@@ -1234,3 +1234,5 @@
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->
+
+