cortesi Tue Mar 26 22:17:51 2002 EDT
Added files:
/phpdoc/it/functions overload.xml
Log:
adding translation by curcio_it
Index: phpdoc/it/functions/overload.xml
+++ phpdoc/it/functions/overload.xml
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.6 Maintainer: curcio_it Status: ready -->
<reference id="ref.overload">
<title>Propriet� object e method call overloading</title>
<titleabbrev>Overloading degli object</titleabbrev>
<partintro id="overload.partintro">
&warn.experimental;
<para>
Lo scopo di questa estensione � di permettere l'overloading delle propriet�
di accesso agli oggetti e dei metodi di chiamata. Solo una funzione � definita
in questa estensione, <function>overload</function> che prende il
nome dalla classe che ha questa funzionalit� abilitata.
La classe nominata ha da definire metodi appropriati se
vuole avere questa funzionalit�: <literal>__get()</literal>,
<literal>__set()</literal> and <literal>__call()</literal>
rispettivamente per ricevere/impostare una propriet�, o chiamare un metodo.
Questa strada del sovraccarico pu� essere selettiva. Dentro queste
funzioni handler l'overloading � disabilitato cos� si pu� accedere
alle propriet� dell'oggetto normalmente.
</para>
<para>
Alcuni semplici esempi sull'uso della funzione
<function>overload</function>
<example>
<title>Overloading di una classe PHP</title>
<programlisting role="php">
<![CDATA[
<?php
class OO
{
var $a = 111;
var $elem = array('b' => 9, 'c' => 42);
// Callback method for getting a property
function __get($prop_name, &$prop_value)
{
if (isset($this->elem[$prop_name])) {
$prop_value = $this->elem[$prop_name];
return true;
} else {
return false;
}
}
// Callback method for setting a property
function __set($prop_name, $prop_value)
{
$this->elem[$prop_name] = $prop_value;
return true;
}
}
// Here we overload the OO object
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:
// add a new item to the $elem array in OO
$o->x = 56;
// instantiate stdclass (it is built-in in PHP 4)
// $val is not overloaded!
$val = new stdclass;
$val->prop = 555;
// Set "a" to be an array with the $val object in it
// But __set() will put this in the $elem array
$o->a = array($val);
var_dump($o->a[0]->prop);
?>
]]>
</programlisting>
</example>
</para>
<warning>
<para>
Siccome � una estensione sperimentale, non tutto
funziona. Non c'� attualmente il supporto per
<literal>__call()</literal>,
puoi solo overloadare le operazioni di ricezione e di impostazione
per le propriet�. Non puoi invocare l'overloading
handlers originale della classe, e
<literal>__set()</literal> funziona solo su un livello
di propriet� di accesso.
</para>
</warning>
</partintro>
<refentry id="function.overload">
<refnamediv>
<refname>overload</refname>
<refpurpose>Abilita le propriet� e il method call overloading per una
classe</refpurpose>
</refnamediv>
<refsect1>
<title>Descrizione</title>
<methodsynopsis>
<type>void</type><methodname>overload</methodname>
<methodparam
choice="opt"><type>string</type><parameter>class_name</parameter></methodparam>
</methodsynopsis>
<para>
La funzione <function>overload</function> abiliter�
la propriet� e il method call overloading per una classe identificata
dal parametro <parameter>class_name</parameter>.
<link linkend="overload.partintro">Guarda un esempio
nella sezione di introduzione di questa parte.</link>.
</para>
</refsect1>
</refentry>
</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
-->