cvs: phpdoc-ro /language/oop5 autoload.xml decon.xml visibility.xml
| From: | Simion Onea | Date: | Sat, 29 Mar 2008 14:18:49 +0000 |
| Subject: | cvs: phpdoc-ro /language/oop5 autoload.xml decon.xml visibility.xml | ||
| Groups: | php.doc.ro | ||
| Request: | Send a blank email to doc-ro+get-384@lists.php.net to get a copy of this message | ||
simionea Sat Mar 29 14:18:49 2008 UTC
Modified files:
/phpdoc-ro/language/oop5 autoload.xml decon.xml visibility.xml
Log:
Updated the file.
http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/autoload.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-ro/language/oop5/autoload.xml diff -u phpdoc-ro/language/oop5/autoload.xml:1.2 phpdoc-ro/language/oop5/autoload.xml:1.3 --- phpdoc-ro/language/oop5/autoload.xml:1.2 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/autoload.xml Sat Mar 29 14:18:49 2008 @@ -1,37 +1,48 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.10 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.autoload" xmlns="http://docbook.org/ns/docbook"> <title>AutoîncÄrcarea claselor</title> <para> - MulÅ£i dezvoltatori care scriu aplicaÅ£ii orientate pe obiecte - creazÄ un fiÅier PHP pentru fiecare clasÄ pe care o definesc. - O problema delicatÄ era lista mare de fiÅiere ce trebuiau - incluse la inceputul fiecÄrui script. + MulÅ£i programatori care scriu aplicaÅ£ii orientate pe obiecte + creazÄ câte un fiÅier PHP pentru fiecare clasÄ pe care o definesc. + O problemÄ delicatÄ era lista mare de fiÅiere ce trebuiau + incluse la începutul fiecÄrui script. </para> <para> Ãn PHP 5, acest lucru nu mai este necasar. Se poate defini funcÅ£ia __autoload care este apelatÄ automat în cazul în care doriÅ£i sÄ folosiÅ£i - o clasÄ care nu a fost încÄ definitÄ. Apelelul la aceasta funcÅ£ie - oferÄ scriptuui o ultimÄ ÅansÄ de a defini clasa pentur a nu + o clasÄ care nu a fost încÄ definitÄ. Apelul la aceastÄ funcÅ£ie + oferÄ script-ului o ultimÄ ÅansÄ de a defini clasa pentru a nu termina cu eroare. </para> <note> <para> ExcepÅ£iile aruncate în __autoload nu pot fi captate într-un bloc <link linkend="language.exceptions">catch</link> Åi rezultând - astfel eroare fatalÄ. + astfel eroare fatalÄ. </para> </note> <note> <para> - AceastÄ funcÅ£ie speciala nu este disponibila daca folosiÅ£i PHP in mod CLI - <link linkend="features.commandline">mod interactiv</link>. + AceastÄ funcÅ£ie specialÄ nu este disponibilÄ dacÄ folosiÅ£i PHP în + <link linkend="features.commandline">mod CLI interactiv</link>. + </para> + </note> + <note> + <para> + DacÄ denumirea clasei este utilizatÄ de ex. în + <function>call_user_func</function>, atunci ea poate conÅ£ine caractere + periculoase, cum ar fi <literal>../</literal>. + Nu este recomandabil sÄ utilizaÅ£i datele introduse de utilizator în + asemenea funcÅ£ii, sau, cel puÅ£in, sÄ verificaÅ£i ce s-a introdus în + <function>__autoload</function>. </para> </note> <para> <example> - <title>Exemplu autoîncÄrcarea</title> + <title>Exemplu cu autoîncÄrcare</title> <para> Acest exemplu încearcÄ sÄ Ã®ncarce clasele <literal>MyClass1</literal> Åi <literal>MyClass2</literal> din fiÅierele <filename>MyClass1.php</filename> @@ -50,6 +61,30 @@ ]]> </programlisting> </example> + <example> + <para> + Acest exemplu încearcÄ sÄ Ã®ncarce interfaÅ£a <literal>ITest</literal>. + </para> + <programlisting role="php"> +<![CDATA[ +<?php + +function __autoload($name) { + var_dump($name); +} + +class Foo implements ITest { +} + +/* +string(5) "ITest" + +Fatal error: Interface 'ITest' not found in ... +*/ +?> +]]> + </programlisting> + </example> </para> </sect1> http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/decon.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-ro/language/oop5/decon.xml diff -u phpdoc-ro/language/oop5/decon.xml:1.4 phpdoc-ro/language/oop5/decon.xml:1.5 --- phpdoc-ro/language/oop5/decon.xml:1.4 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/decon.xml Sat Mar 29 14:18:49 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.4 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.decon" xmlns="http://docbook.org/ns/docbook"> <title>Constructori Åi Destructori</title> @@ -12,20 +13,21 @@ <methodparam choice="opt"><parameter>...</parameter></methodparam> </methodsynopsis> <para> - PHP 5 permite dezvoltatorilor sÄ defineascÄ constructori pentru clase. + PHP 5 permite programatorilor sÄ defineascÄ constructori pentru clase. Clasele care au definit un constructor vor apela aceastÄ metodÄ la fiecare - obiect nou creat, pentru ca acesta (obiectul) sÄ fie utilizabil pentru - iniÅ£ializare înante de a fi folosit. + obiect nou creat, pentru ca acesta (obiectul) sÄ fie utilizabil pentru + iniÅ£ializare înante de a fi folosit. </para> <note> <simpara> - Constructorul pÄrinte nu este apelat implicit. Pentru a apela un - constructor pÄrinte, trebuie sÄ apelaÅ£i - <function>parent::__construct</function> în clasa descendentÄ. + Constructorul-pÄrinte nu este apelat implicit dacÄ clasa-fiicÄ defineÅte + un constructor. Pentru a apela un constructor-pÄrinte, este necesar de a + apela <function>parent::__construct</function> din cadrul + constructorului-fiu. </simpara> </note> <example> - <title>folosirea metodei de definire a constructorilor</title> + <title>utilizarea noilor constructori unificaÅ£i</title> <programlisting role="php"> <![CDATA[ <?php @@ -50,11 +52,11 @@ </example> <para> Pentru compatibilitate cu versiunile mai vechi, dacÄ PHP 5 nu gÄseÅte - funcÅ£ia <function>__construct</function> pentru o clasÄ, va cÄuta - în formatul vechi o funcÅ£ie care are chiar numele clasei. + funcÅ£ia <function>__construct</function> pentru o clasÄ, va cÄuta + în formatul vechi o funcÅ£ie care are chiar numele clasei. Drept urmare, singura neconcordanÅ£Ä Ã®n compatibilitate va fi atunci când - aÅ£i folosit în clase funcÅ£ia <function>__construct</function> pentru - alte scopuri decât iniÅ£ializarea obiectului. + aÅ£i folosit în clase funcÅ£ia <function>__construct</function> pentru + alte scopuri decât iniÅ£ializarea obiectului. </para> </sect2> @@ -65,10 +67,10 @@ <void /> </methodsynopsis> <para> - PHP 5 introduce un conceptul de distrugere a unui obiect similar cu cel - regÄsit în alte limbaje de programare orientate pe obiecte (C++). - Metoda de distrugere va fi apelatÄ imediat ce toate referinÅ£ele cÄtre - un anumit obiect dispar sau atunci când obiectul este distrus explicit. + PHP 5 introduce un concept de distrugere a unui obiect similar cu cel + regÄsit în alte limbaje de programare orientate pe obiecte (C++). + Metoda de distrugere va fi apelatÄ imediat ce toate referinÅ£ele cÄtre + un anumit obiect dispar sau atunci când obiectul este distrus explicit. </para> <example> <title>Exemplu destructor</title> @@ -92,10 +94,24 @@ </programlisting> </example> <para> - La fel ca la constructori, destructorii pÄrinti nu vor fi apelaÅ£i implicit. - Pentru a apela destructorul pÄrinte trebuie sÄ apelaÅ£i explicit - <function>parent::__destruct</function> în destructorul descendent. + La fel ca la constructori, destructorii-pÄrinti nu vor fi apelaÅ£i implicit. + Pentru a apela destructorul-pÄrinte trebuie sÄ apelaÅ£i explicit + <function>parent::__destruct</function> în destructorul descendent. </para> + <note> + <para> + Destructorii apelaÅ£i la momentul terminÄrii execuÅ£iei scriptului au + antetele HTTP trimise deja. Directorul de lucru în timpul fazei de + deconectare a scriptului poate sÄ difere în cazul anumitor SAPI-uri + (de ex. Apache). + </para> + </note> + <note> + <para> + Ãncercarea de a arunca o excepÅ£ie dintr-un destructor (apelat la momentul + terminÄrii execuÅ£iei scriptului) va cauza o eroare fatalÄ. + </para> + </note> </sect2> </sect1> http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/visibility.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-ro/language/oop5/visibility.xml diff -u phpdoc-ro/language/oop5/visibility.xml:1.4 phpdoc-ro/language/oop5/visibility.xml:1.5 --- phpdoc-ro/language/oop5/visibility.xml:1.4 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/visibility.xml Sat Mar 29 14:18:49 2008 @@ -1,15 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.4 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.visibility" xmlns="http://docbook.org/ns/docbook"> <title>Vizibilitatea</title> <para> Vizibilitatea unei propietÄÅ£i sau a unei metode - poate fi definitÄ prefixând declaraÅ£ia cu una din cuvintele + poate fi definitÄ prefixând declaraÅ£ia cu unul din cuvintele cheie: public, protected sau private. Elementele (fie ele propietÄÅ£i sau metode) declarate public pot fi accesate oriunde. Elementele declarate protected limiteazÄ accesul la clasele - care moÅtenesc propietÄÅ£ile sau metodele (precum Åi la clasa + care moÅtenesc proprietÄÅ£ile sau metodele (precum Åi la clasa care le defineÅte). Ãn final, cele declarate private limiteazÄ vizibilitatea doar la clasa în care sunt definite. </para> @@ -42,7 +43,7 @@ } $obj = new ClassaMea(); -echo $obj->membru_public; // FuncÅ£ioneaza +echo $obj->membru_public; // FuncÅ£ioneazÄ echo $obj->membru_protected; // Eroare fatalÄ echo $obj->membru_private; // Eroare fatalÄ $obj->afiseazaBunaZiua(); // AfiÅeazÄ Eu sunt: Public, Eu sunt: Protected, Eu sunt: Private @@ -77,10 +78,9 @@ <note> <simpara> Metoda PHP 4 de a declara variabile folosind cuvântul cheie - <emphasis>var</emphasis> nu mai este valabilÄ pentru obiectele - din PHP 5. Pentru compatibilitate variabilele declarate - în PHP 5 cu <emphasis>var</emphasis> vor fi automat înzestrate - cu vizibilitate public, Åi se va emite un warning de tip + <emphasis>var</emphasis> este încÄ susÅ£inutÄ din motive de + compatibilitate (fiind sinonim cuvântului cheie public). + Ãn PHP 5 înainte de 5.1.3, utilizarea sa va emite o avertizare de tip <constant>E_STRICT</constant>. </simpara> </note> @@ -88,8 +88,8 @@ <sect2 xml:id="language.oop5.visiblity-methods"> <title>Vizibilitatea metodelor</title> <para> - Metodele claselor trebuie definite cu public, private, sau protected. Metodele - fÄrÄ nici o declaraÅ£ie sunt implicit considerate public. + Metodele claselor trebuie definite cu public, private, sau protected. + Metodele fÄrÄ nici o declaraÅ£ie sunt implicit considerate public. </para> <para> <example> @@ -98,23 +98,23 @@ <![CDATA[ <?php /** - * Definire ClasaMea + * DefineÅte MyClass */ -class ClasaMea +class MyClass { - // Constructorul trebuie sÄ fie public + // DeclarÄ un constructor public public function __construct() { } - // Declararea unei metode: public + // DeclarÄ o metodÄ publicÄ public function MyPublic() { } - // Declararea unei metode: protected + // DeclarÄ o metodÄ protected protected function MyProtected() { } - // Declararea unei metode: private + // DeclarÄ o metodÄ private private function MyPrivate() { } - // This is public + // Aceasta este public function Foo() { $this->MyPublic(); @@ -125,28 +125,59 @@ $myclass = new MyClass; $myclass->MyPublic(); // FuncÅ£ioneazÄ -$myclass->MyProtected(); // Eroare FatalÄ -$myclass->MyPrivate(); // Eroare FatalÄ -$myclass->Foo(); // Public, Protected Åi Private funcÅ£ioneazÄ +$myclass->MyProtected(); // Eroare fatalÄ +$myclass->MyPrivate(); // Eroare fatalÄ +$myclass->Foo(); // Cele Public, Protected Åi Private funcÅ£ioneazÄ /** - * Define MyClass2 + * DefineÅte MyClass2 */ class MyClass2 extends MyClass { - // This is public + // Aceasta este public function Foo2() { $this->MyPublic(); $this->MyProtected(); - $this->MyPrivate(); // Eroare FatalÄ + $this->MyPrivate(); // Eroare fatalÄ } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // FuncÅ£ioneazÄ -$myclass2->Foo2(); // Public Åi Protected funcÅ£ioneazÄ, nu Åi Private +$myclass2->Foo2(); // Public Åi Protected funcÅ£ioneazÄ, dar nu Åi Private + +class Bar +{ + public function test() { + $this->testPrivate(); + $this->testPublic(); + } + + public function testPublic() { + echo "Bar::testPublic\n"; + } + + private function testPrivate() { + echo "Bar::testPrivate\n"; + } +} + +class Foo extends Bar +{ + public function testPublic() { + echo "Foo::testPublic\n"; + } + + private function testPrivate() { + echo "Foo::testPrivate\n"; + } +} + +$myFoo = new foo(); +$myFoo->test(); // Bar::testPrivate + // Foo::testPublic ?> ]]> </programlisting>
http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/autoload.xml?r1=1.2&r2=1.3&diff_format=u Index: phpdoc-ro/language/oop5/autoload.xml diff -u phpdoc-ro/language/oop5/autoload.xml:1.2 phpdoc-ro/language/oop5/autoload.xml:1.3 --- phpdoc-ro/language/oop5/autoload.xml:1.2 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/autoload.xml Sat Mar 29 14:18:49 2008 @@ -1,37 +1,48 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.2 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.3 $ --> +<!-- EN-Revision: 1.10 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.autoload" xmlns="http://docbook.org/ns/docbook"> <title>AutoîncÄrcarea claselor</title> <para> - MulÅ£i dezvoltatori care scriu aplicaÅ£ii orientate pe obiecte - creazÄ un fiÅier PHP pentru fiecare clasÄ pe care o definesc. - O problema delicatÄ era lista mare de fiÅiere ce trebuiau - incluse la inceputul fiecÄrui script. + MulÅ£i programatori care scriu aplicaÅ£ii orientate pe obiecte + creazÄ câte un fiÅier PHP pentru fiecare clasÄ pe care o definesc. + O problemÄ delicatÄ era lista mare de fiÅiere ce trebuiau + incluse la începutul fiecÄrui script. </para> <para> Ãn PHP 5, acest lucru nu mai este necasar. Se poate defini funcÅ£ia __autoload care este apelatÄ automat în cazul în care doriÅ£i sÄ folosiÅ£i - o clasÄ care nu a fost încÄ definitÄ. Apelelul la aceasta funcÅ£ie - oferÄ scriptuui o ultimÄ ÅansÄ de a defini clasa pentur a nu + o clasÄ care nu a fost încÄ definitÄ. Apelul la aceastÄ funcÅ£ie + oferÄ script-ului o ultimÄ ÅansÄ de a defini clasa pentru a nu termina cu eroare. </para> <note> <para> ExcepÅ£iile aruncate în __autoload nu pot fi captate într-un bloc <link linkend="language.exceptions">catch</link> Åi rezultând - astfel eroare fatalÄ. + astfel eroare fatalÄ. </para> </note> <note> <para> - AceastÄ funcÅ£ie speciala nu este disponibila daca folosiÅ£i PHP in mod CLI - <link linkend="features.commandline">mod interactiv</link>. + AceastÄ funcÅ£ie specialÄ nu este disponibilÄ dacÄ folosiÅ£i PHP în + <link linkend="features.commandline">mod CLI interactiv</link>. + </para> + </note> + <note> + <para> + DacÄ denumirea clasei este utilizatÄ de ex. în + <function>call_user_func</function>, atunci ea poate conÅ£ine caractere + periculoase, cum ar fi <literal>../</literal>. + Nu este recomandabil sÄ utilizaÅ£i datele introduse de utilizator în + asemenea funcÅ£ii, sau, cel puÅ£in, sÄ verificaÅ£i ce s-a introdus în + <function>__autoload</function>. </para> </note> <para> <example> - <title>Exemplu autoîncÄrcarea</title> + <title>Exemplu cu autoîncÄrcare</title> <para> Acest exemplu încearcÄ sÄ Ã®ncarce clasele <literal>MyClass1</literal> Åi <literal>MyClass2</literal> din fiÅierele <filename>MyClass1.php</filename> @@ -50,6 +61,30 @@ ]]> </programlisting> </example> + <example> + <para> + Acest exemplu încearcÄ sÄ Ã®ncarce interfaÅ£a <literal>ITest</literal>. + </para> + <programlisting role="php"> +<![CDATA[ +<?php + +function __autoload($name) { + var_dump($name); +} + +class Foo implements ITest { +} + +/* +string(5) "ITest" + +Fatal error: Interface 'ITest' not found in ... +*/ +?> +]]> + </programlisting> + </example> </para> </sect1> http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/decon.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-ro/language/oop5/decon.xml diff -u phpdoc-ro/language/oop5/decon.xml:1.4 phpdoc-ro/language/oop5/decon.xml:1.5 --- phpdoc-ro/language/oop5/decon.xml:1.4 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/decon.xml Sat Mar 29 14:18:49 2008 @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.4 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.decon" xmlns="http://docbook.org/ns/docbook"> <title>Constructori Åi Destructori</title> @@ -12,20 +13,21 @@ <methodparam choice="opt"><parameter>...</parameter></methodparam> </methodsynopsis> <para> - PHP 5 permite dezvoltatorilor sÄ defineascÄ constructori pentru clase. + PHP 5 permite programatorilor sÄ defineascÄ constructori pentru clase. Clasele care au definit un constructor vor apela aceastÄ metodÄ la fiecare - obiect nou creat, pentru ca acesta (obiectul) sÄ fie utilizabil pentru - iniÅ£ializare înante de a fi folosit. + obiect nou creat, pentru ca acesta (obiectul) sÄ fie utilizabil pentru + iniÅ£ializare înante de a fi folosit. </para> <note> <simpara> - Constructorul pÄrinte nu este apelat implicit. Pentru a apela un - constructor pÄrinte, trebuie sÄ apelaÅ£i - <function>parent::__construct</function> în clasa descendentÄ. + Constructorul-pÄrinte nu este apelat implicit dacÄ clasa-fiicÄ defineÅte + un constructor. Pentru a apela un constructor-pÄrinte, este necesar de a + apela <function>parent::__construct</function> din cadrul + constructorului-fiu. </simpara> </note> <example> - <title>folosirea metodei de definire a constructorilor</title> + <title>utilizarea noilor constructori unificaÅ£i</title> <programlisting role="php"> <![CDATA[ <?php @@ -50,11 +52,11 @@ </example> <para> Pentru compatibilitate cu versiunile mai vechi, dacÄ PHP 5 nu gÄseÅte - funcÅ£ia <function>__construct</function> pentru o clasÄ, va cÄuta - în formatul vechi o funcÅ£ie care are chiar numele clasei. + funcÅ£ia <function>__construct</function> pentru o clasÄ, va cÄuta + în formatul vechi o funcÅ£ie care are chiar numele clasei. Drept urmare, singura neconcordanÅ£Ä Ã®n compatibilitate va fi atunci când - aÅ£i folosit în clase funcÅ£ia <function>__construct</function> pentru - alte scopuri decât iniÅ£ializarea obiectului. + aÅ£i folosit în clase funcÅ£ia <function>__construct</function> pentru + alte scopuri decât iniÅ£ializarea obiectului. </para> </sect2> @@ -65,10 +67,10 @@ <void /> </methodsynopsis> <para> - PHP 5 introduce un conceptul de distrugere a unui obiect similar cu cel - regÄsit în alte limbaje de programare orientate pe obiecte (C++). - Metoda de distrugere va fi apelatÄ imediat ce toate referinÅ£ele cÄtre - un anumit obiect dispar sau atunci când obiectul este distrus explicit. + PHP 5 introduce un concept de distrugere a unui obiect similar cu cel + regÄsit în alte limbaje de programare orientate pe obiecte (C++). + Metoda de distrugere va fi apelatÄ imediat ce toate referinÅ£ele cÄtre + un anumit obiect dispar sau atunci când obiectul este distrus explicit. </para> <example> <title>Exemplu destructor</title> @@ -92,10 +94,24 @@ </programlisting> </example> <para> - La fel ca la constructori, destructorii pÄrinti nu vor fi apelaÅ£i implicit. - Pentru a apela destructorul pÄrinte trebuie sÄ apelaÅ£i explicit - <function>parent::__destruct</function> în destructorul descendent. + La fel ca la constructori, destructorii-pÄrinti nu vor fi apelaÅ£i implicit. + Pentru a apela destructorul-pÄrinte trebuie sÄ apelaÅ£i explicit + <function>parent::__destruct</function> în destructorul descendent. </para> + <note> + <para> + Destructorii apelaÅ£i la momentul terminÄrii execuÅ£iei scriptului au + antetele HTTP trimise deja. Directorul de lucru în timpul fazei de + deconectare a scriptului poate sÄ difere în cazul anumitor SAPI-uri + (de ex. Apache). + </para> + </note> + <note> + <para> + Ãncercarea de a arunca o excepÅ£ie dintr-un destructor (apelat la momentul + terminÄrii execuÅ£iei scriptului) va cauza o eroare fatalÄ. + </para> + </note> </sect2> </sect1> http://cvs.php.net/viewvc.cgi/phpdoc-ro/language/oop5/visibility.xml?r1=1.4&r2=1.5&diff_format=u Index: phpdoc-ro/language/oop5/visibility.xml diff -u phpdoc-ro/language/oop5/visibility.xml:1.4 phpdoc-ro/language/oop5/visibility.xml:1.5 --- phpdoc-ro/language/oop5/visibility.xml:1.4 Tue Sep 18 11:47:16 2007 +++ phpdoc-ro/language/oop5/visibility.xml Sat Mar 29 14:18:49 2008 @@ -1,15 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- $Revision: 1.4 $ --> -<!-- EN-Revision: 1.1 Maintainer: radical Status: translated --> +<!-- $Revision: 1.5 $ --> +<!-- EN-Revision: 1.4 Maintainer: radical Status: translated --> +<!-- CREDITS: simionea --> <sect1 xml:id="language.oop5.visibility" xmlns="http://docbook.org/ns/docbook"> <title>Vizibilitatea</title> <para> Vizibilitatea unei propietÄÅ£i sau a unei metode - poate fi definitÄ prefixând declaraÅ£ia cu una din cuvintele + poate fi definitÄ prefixând declaraÅ£ia cu unul din cuvintele cheie: public, protected sau private. Elementele (fie ele propietÄÅ£i sau metode) declarate public pot fi accesate oriunde. Elementele declarate protected limiteazÄ accesul la clasele - care moÅtenesc propietÄÅ£ile sau metodele (precum Åi la clasa + care moÅtenesc proprietÄÅ£ile sau metodele (precum Åi la clasa care le defineÅte). Ãn final, cele declarate private limiteazÄ vizibilitatea doar la clasa în care sunt definite. </para> @@ -42,7 +43,7 @@ } $obj = new ClassaMea(); -echo $obj->membru_public; // FuncÅ£ioneaza +echo $obj->membru_public; // FuncÅ£ioneazÄ echo $obj->membru_protected; // Eroare fatalÄ echo $obj->membru_private; // Eroare fatalÄ $obj->afiseazaBunaZiua(); // AfiÅeazÄ Eu sunt: Public, Eu sunt: Protected, Eu sunt: Private @@ -77,10 +78,9 @@ <note> <simpara> Metoda PHP 4 de a declara variabile folosind cuvântul cheie - <emphasis>var</emphasis> nu mai este valabilÄ pentru obiectele - din PHP 5. Pentru compatibilitate variabilele declarate - în PHP 5 cu <emphasis>var</emphasis> vor fi automat înzestrate - cu vizibilitate public, Åi se va emite un warning de tip + <emphasis>var</emphasis> este încÄ susÅ£inutÄ din motive de + compatibilitate (fiind sinonim cuvântului cheie public). + Ãn PHP 5 înainte de 5.1.3, utilizarea sa va emite o avertizare de tip <constant>E_STRICT</constant>. </simpara> </note> @@ -88,8 +88,8 @@ <sect2 xml:id="language.oop5.visiblity-methods"> <title>Vizibilitatea metodelor</title> <para> - Metodele claselor trebuie definite cu public, private, sau protected. Metodele - fÄrÄ nici o declaraÅ£ie sunt implicit considerate public. + Metodele claselor trebuie definite cu public, private, sau protected. + Metodele fÄrÄ nici o declaraÅ£ie sunt implicit considerate public. </para> <para> <example> @@ -98,23 +98,23 @@ <![CDATA[ <?php /** - * Definire ClasaMea + * DefineÅte MyClass */ -class ClasaMea +class MyClass { - // Constructorul trebuie sÄ fie public + // DeclarÄ un constructor public public function __construct() { } - // Declararea unei metode: public + // DeclarÄ o metodÄ publicÄ public function MyPublic() { } - // Declararea unei metode: protected + // DeclarÄ o metodÄ protected protected function MyProtected() { } - // Declararea unei metode: private + // DeclarÄ o metodÄ private private function MyPrivate() { } - // This is public + // Aceasta este public function Foo() { $this->MyPublic(); @@ -125,28 +125,59 @@ $myclass = new MyClass; $myclass->MyPublic(); // FuncÅ£ioneazÄ -$myclass->MyProtected(); // Eroare FatalÄ -$myclass->MyPrivate(); // Eroare FatalÄ -$myclass->Foo(); // Public, Protected Åi Private funcÅ£ioneazÄ +$myclass->MyProtected(); // Eroare fatalÄ +$myclass->MyPrivate(); // Eroare fatalÄ +$myclass->Foo(); // Cele Public, Protected Åi Private funcÅ£ioneazÄ /** - * Define MyClass2 + * DefineÅte MyClass2 */ class MyClass2 extends MyClass { - // This is public + // Aceasta este public function Foo2() { $this->MyPublic(); $this->MyProtected(); - $this->MyPrivate(); // Eroare FatalÄ + $this->MyPrivate(); // Eroare fatalÄ } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // FuncÅ£ioneazÄ -$myclass2->Foo2(); // Public Åi Protected funcÅ£ioneazÄ, nu Åi Private +$myclass2->Foo2(); // Public Åi Protected funcÅ£ioneazÄ, dar nu Åi Private + +class Bar +{ + public function test() { + $this->testPrivate(); + $this->testPublic(); + } + + public function testPublic() { + echo "Bar::testPublic\n"; + } + + private function testPrivate() { + echo "Bar::testPrivate\n"; + } +} + +class Foo extends Bar +{ + public function testPublic() { + echo "Foo::testPublic\n"; + } + + private function testPrivate() { + echo "Foo::testPrivate\n"; + } +} + +$myFoo = new foo(); +$myFoo->test(); // Bar::testPrivate + // Foo::testPublic ?> ]]> </programlisting>