cvs: phpdoc-ro /language/oop5 decon.xml visibility.xml

From: Date: Fri, 18 Feb 2005 08:22:49 +0000
Subject: cvs: phpdoc-ro /language/oop5 decon.xml visibility.xml
Groups: php.doc.ro 
Request: Send a blank email to doc-ro+get-143@lists.php.net to get a copy of this message
radical Fri Feb 18 03:22:50 2005 EDT Added files: /phpdoc-ro/language/oop5 decon.xml visibility.xml Log: Nou in PHP 5 !!!

http://cvs.php.net/co.php/phpdoc-ro/language/oop5/decon.xml?r=1.1&p=1 Index: phpdoc-ro/language/oop5/decon.xml +++ phpdoc-ro/language/oop5/decon.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <sect1 id="language.oop5.decon"> <title>Constructori si Destructori</title> <sect2 id="language.oop5.decon.constructor"> <title>Constructor</title> <methodsynopsis> <type>void</type><methodname>__construct</methodname> <methodparam choice="opt"><type>mixed</type><parameter>args</parameter></methodparam> <methodparam choice="opt"><parameter>...</parameter></methodparam> </methodsynopsis> <para> PHP 5 permite dezvoltatorilor sa defineasca constructori pentru clase. Clasele care au definit un constructor vor apela aceasta metoda la fiecare obiect nou creat, pentru ca acesta (obiectul) sa fie utilizabil pentru initializare inante de a fi folosit. </para> <note> <simpara> Constructorul parinte nu este apelat implicit. Pentru a apela un constructor parinte, trebuie sa apelati <function>parent::__construct</function> in clasa descendenta. </simpara> </note> <example> <title>folosirea metodei de definire a constructorilor</title> <programlisting role="php"> <![CDATA[ <?php class ClasaDeBaza { function __construct() { print "Sunt in contructorul clasei: ClasaDeBaza\n"; } } class ClasaExtinsa extends ClasaDeBaza { function __construct() { parent::__construct(); print "Sunt in constructorul clasei: ClasaExtinsa\n"; } } $obj = new ClasaDeBaza(); $obj = new ClasaExtinsa(); ?> ]]> </programlisting> </example> <para> Pentru compatibilitate cu versiunile mai vechi, daca PHP 5 nu gaseste functia <function>__construct</function> penru o clasa, va cauta in formatul vechi o functie care are chiar numele clasei. Drept urmare, singura neconcordanta in compatibilitate va fi atunci cand ati folosit in clase functia <function>__construct</function> pentru alte scopuri decat initializarea obiectului. </para> </sect2> <sect2 id="language.oop5.decon.destructor"> <title>Destructori</title> <methodsynopsis> <type>void</type><methodname>__destruct</methodname> <void /> </methodsynopsis> <para> PHP 5 introduce un conceptul de distrugere a unui obiect similar cu cel regasit in alte limbaje de programare orientate pe obiecte (C++). Metoda de distrugere va fi chemata imediat ce toate referintele catre un anumit obiect dispar sau atunci cand obiectul este distrus explicit. </para> <example> <title>Exemplu destructor</title> <programlisting role="php"> <![CDATA[ <?php class ClassaCuDestructor { function __construct() { print "Sunt in constructor.\n"; $this->name = "ClassaCuDestructor"; } function __destruct() { print "Distrug " . $this->name . "\n"; } } $obj = new ClassaCuDestructor(); ?> ]]> </programlisting> </example> <para> La fel ca la constructori, destructorii parinti nu vor fi chemati implicit. Pentru a apela destructorul parinte trebuie sa apelati explicit <function>parent::__destruct</function> in destructorul descendent. </para> </sect2> </sect1> <!-- 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/co.php/phpdoc-ro/language/oop5/visibility.xml?r=1.1&p=1 Index: phpdoc-ro/language/oop5/visibility.xml +++ phpdoc-ro/language/oop5/visibility.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <sect1 id="language.oop5.visibility"> <title>Vizibilitatea</title> <para> Vizibilitatea unei propietati sau a unei metode poate fi definita prefixand declaratia cu una din cuvintele cheie: public, protected or private. Elementele (fie ele propietati sau metode) declarate public pot fi accesate oriunde. Elementele declarate protected limiteaza accesul la clasele care mostenesc propietatile sau metodele (precum si la clasa care le defineste). In final, cele declarate cu private limiteaza vizibilitatea doar la clasa in care este definita. </para> <sect2 id="language.oop5.visiblity-members"> <title>Vizibilitatea membrilor</title> <para> Membri unei clase trebuie definiti cu: public, private, sau protected. </para> <para> <example> <title>Declaratie membri</title> <programlisting role="php"> <![CDATA[ <?php /** * Definire ClassaMea */ class ClassaMea { public $membru_public = 'Eu sunt: Public'; protected $membru_protected = 'Eu sunt: Protected'; private $membru_private = 'Eu sunt: Private'; function afiseazaBunaZiua() { echo $this->membru_public . ", "; echo $this->membru_protected . ", "; echo $this->membru_private; } } $obj = new ClassaMea(); echo $obj->membru_public; // Functioneaza echo $obj->membru_protected; // Eroare fatala echo $obj->membru_private; // Eroare fatala $obj->afiseazaBunaZiua(); // Afiseaza Eu sunt: Public, Eu sunt: Protected, Eu sunt: Private /** * Define ClassaMea2 */ class ClassaMea2 extends ClassaMea { // Putem redeclara metodele publice si protected, dar nu si cele private protected $membru_protected = 'Eu sunt: Protected2'; function afiseazaBunaZiua() { echo $this->membru_public . ","; echo $this->membru_protected; echo $this->membru_private; } } $obj2 = new ClassaMea2(); echo $obj->membru_public; // Functioneaza echo $obj2->membru_private; // Nedefinit echo $obj2->membru_protected; // Eroare fatala $obj2->afiseazaBunaZiua(); // Afiseaza Eu sunt: Public, Eu sunt: Protected2 ?> ]]> </programlisting> </example> </para> <note> <simpara> Metoda PHP 4 de a declara variabile folosind cuvantul cheie <emphasis>var</emphasis> nu mai este valabile pentru obiectele din PHP 5. Pentru compatibilitate variabilele declarate in PHP 5 cu <emphasis>var</emphasis> vor fi automat inzestrate cu vizibilitate public, si se va emite un warning de tip <constant>E_STRICT</constant>. </simpara> </note> </sect2> <sect2 id="language.oop5.visiblity-methods"> <title>Method Visibility</title> <para> Class methods must be defined with public, private, or protected. Methods without any declaration are defined as public. </para> <para> <example> <title>Method Declaration</title> <programlisting role="php"> <![CDATA[ <?php /** * Define MyClass */ class MyClass { // Contructors must be public public function __construct() { } // Declare a public method public function MyPublic() { } // Declare a protected method protected function MyProtected() { } // Declare a private method private function MyPrivate() { } // This is public function Foo() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); } } $myclass = new MyClass; $myclass->MyPublic(); // Works $myclass->MyProtected(); // Fatal Error $myclass->MyPrivate(); // Fatal Error $myclass->Foo(); // Public, Protected and Private work /** * Define MyClass2 */ class MyClass2 extends MyClass { // This is public function Foo2() { $this->MyPublic(); $this->MyProtected(); $this->MyPrivate(); // Fatal Error } } $myclass2 = new MyClass2; $myclass2->MyPublic(); // Works $myclass2->Foo2(); // Public and Protected work, not Private ?> ]]> </programlisting> </example> </para> </sect2> </sect1> <!-- 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 -->
« previous php.doc.ro (#143) next »