Algunos ejemplos sencillos sobre el uso de la función overload():
Example #1 Sobrecargar una clase de PHP
<?php
class OO {
var $a = 111;
var $elem = array('b' => 9, 'c' => 42);
// Método de llamada de retorno para obtener una propiedad
function __get($nombre_prop, &$valor_prop)
{
if (isset($this->elem[$nombre_prop])) {
$valor_prop = $this->elem[$nombre_prop];
return true;
} else {
return false;
}
}
// Método de llamada de retorno para establecer una propiedad
function __set($nombre_prop, $valor_prop)
{
$this->elem[$nombre_prop] = $valor_prop;
return true;
}
}
// Aquí sobrecargamos el objeto OO
overload('OO');
$o = new OO;
echo "\$o->a: $o->a\n"; // imprime: $o->a: 111
echo "\$o->b: $o->b\n"; // imprime: $o->b: 9
echo "\$o->c: $o->c\n"; // imprime: $o->c: 42
echo "\$o->d: $o->d\n"; // imprime: $o->d:
// añadir un nuevo elemento a la matriz $elem de OO
$o->x = 56;
// instanciar stdclass (está incluido en PHP 4)
// ¡$val no está sobrecargada!
$val = new stdclass;
$val->prop = 555;
// Establecer "a" para que sea una matriz con el objeto $val en él
// Pero __set() pondrá esto en la matriz $elem
$o->a = array($val);
var_dump($o->a[0]->prop);
?>