cvs: phpdoc-pl /reference/overload reference.xml

From: Date: Tue, 24 Feb 2004 02:07:33 +0000
Subject: cvs: phpdoc-pl /reference/overload reference.xml
Groups: php.doc.pl 
Request: Send a blank email to doc-pl+get-299@lists.php.net to get a copy of this message
leszek Mon Feb 23 21:07:33 2004 EDT Added files: /phpdoc-pl/reference/overload reference.xml Log: http://cvs.php.net/co.php/phpdoc-pl/reference/overload/reference.xml?r=1.1&p=1 Index: phpdoc-pl/reference/overload/reference.xml +++ phpdoc-pl/reference/overload/reference.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- EN-Revision: 1.7 Maintainer: dombal Status: ready --> <!-- $Revision: 1.1 $ --> <reference id="ref.overload"> <title>Przeci±¿anie w³a¶ciwo¶ci obiektów i wo³ania ich metod</title> <titleabbrev>Przeci±¿anie obiektów</titleabbrev> <partintro> <section id="overload.intro"> &reftitle.intro; <para> Celem tego rozszerzenia jest umo¿liwienie przeci±¿ania dostêpu do w³a¶ciwo¶ci obiektów oraz wo³ania metod. Rozszerzenie to definiuje tylko jedn± funkcjê, <function>overload</function>, która przyjmuje jako parametr nazwê klasy dla której przeci±¿anie powinno byæ udostêpnione. Klasa ta powinna mieæ zdefiniowane odpowiednie metody, je¿eli chce korzystaæ z tej dodatkowej funkcjonalno¶ci: <literal>__get()</literal>, <literal>__set()</literal> oraz <literal>__call()</literal> odpowwiednio dla pobierania/ustawiania warto¶ci w³a¶ciwo¶ci, lub wo³ania metod. Tym sposobem przeci±¿anie mo¿e byæ dostêpne wybiórczo. Wewn±trz tych funkcji bs³uguj±cych przeci±¿anie, ono samo jest niedostêpne by mieæ mo¿liwo¶æ normalnego dostêpu do w³a¶ciwo¶ci obiektu. </para> &warn.experimental; </section> <section id="overload.requirements"> &reftitle.required; &no.requirement; </section> &reference.overload.configure; <section id="overload.configuration"> &reftitle.runtime; &no.config; </section> <section id="overload.resources"> &reftitle.resources; &no.resource; </section> <section id="overload.constants"> &reftitle.constants; &no.constants; </section> <section id="overload.examples"> &reftitle.examples; <para> Kilka prostych przyk³adów demonstruj±cych u¿ycie funkcji <function>overload</function>: <example> <title>Przeci±¿anie klasy PHP</title> <programlisting role="php"> <![CDATA[ <?php class OO { var $a = 111; var $elem = array('b' => 9, 'c' => 42); // Funkcja obs³uguj±ca pobierania w³a¶ciwo¶ci function __get($wl_nazwa, &$wl_wart) { if (isset($this->elem[$wl_nazwa])) { $wl_wart = $this->elem[$wl_nazwa]; return true; } else { return false; } } // Funkcja obs³uguj±ca ustawianie w³a¶ciwo¶ci function __set($wl_nazwa, $wl_wart) { $this->elem[$wl_nazwa] = $wl_wart; return true; } } // Umo¿liwiamy przeci±¿anie obiektów klasy OO overload('OO'); $o = new OO; print "\$o->a: $o->a\n"; // print: $o->a: print "\$o->b: $o->b\n"; // print: $o->b: 9 print "\$o->c: $o->c\n"; // print: $o->c: 42 print "\$o->d: $o->d\n"; // print: $o->d: // dodajemy now± pozycjê do tablicy $elem w OO $o->x = 56; // tworzymy egzemplarz klasy stdclass (wbudowanej w PHP 4) // $val nie jest przeci±¿ane! $val = new stdclass; $val->prop = 555; // Ustawiamy "a" jako tablicê z obiektem $val w ¶rodku // Lecz __set() w³o¿y to do tablicy $elem $o->a = array($val); var_dump($o->a[0]->prop); ?> ]]> </programlisting> </example> </para> <warning> <para> Poniewa¿ jest to rozszerzenie eksperymentalne, nie wszystko dzia³a. Brakuje aktualnie wsparcia dla <literal>__call()</literal>, mo¿na przeci±¿aæ tylko operacje pobierania i ustawiania w³a¶ciwo¶ci obiektu. Nie mo¿na tak¿e wo³aæ funkcji obs³ugi przeci±¿ania jak normalnych metod istniej±cych w klasie, a <literal>__set()</literal> dzia³a tylko do jednego poziomu dostêpu do w³a¶ciwo¶ci. </para> </warning> </section> </partintro> &reference.overload.functions; </reference> <!-- 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.pl (#299) next »