cvs: phpdoc-pl /reference/overload reference.xml
| From: | Leszek Krupinski | 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
-->