La interfaz ArrayAccess

(PHP 5, PHP 7)

Introducción

Interfaz para proporcionar acceso a objetos como arrays.

Sinopsis de la Interfaz

ArrayAccess {
/* Métodos */
abstract public offsetExists ( mixed $offset ) : bool
abstract public offsetGet ( mixed $offset ) : mixed
abstract public offsetSet ( mixed $offset , mixed $value ) : void
abstract public offsetUnset ( mixed $offset ) : void
}

Ejemplo #1 Uso básico

<?php
class Obj implements ArrayAccess {
    private 
$contenedor = array();

    public function 
__construct() {
        
$this->contenedor = array(
            
"uno"   => 1,
            
"dos"   => 2,
            
"tres" => 3,
        );
    }

    public function 
offsetSet($offset$valor) {
        if (
is_null($offset)) {
            
$this->contenedor[] = $valor;
        } else {
            
$this->contenedor[$offset] = $valor;
        }
    }

    public function 
offsetExists($offset) {
        return isset(
$this->contenedor[$offset]);
    }

    public function 
offsetUnset($offset) {
        unset(
$this->contenedor[$offset]);
    }

    public function 
offsetGet($offset) {
        return isset(
$this->contenedor[$offset]) ? $this->contenedor[$offset] : null;
    }
}

$obj = new Obj;

var_dump(isset($obj["dos"]));
var_dump($obj["dos"]);
unset(
$obj["dos"]);
var_dump(isset($obj["dos"]));
$obj["dos"] = "Un valor";
var_dump($obj["dos"]);
$obj[] = 'Añadido 1';
$obj[] = 'Añadido 2';
$obj[] = 'Añadido 3';
print_r($obj);
?>

El resultado del ejemplo sería algo similar a:

bool(true)
int(2)
bool(false)
string(8) "Un valor"
obj Object
(
    [contenedor:obj:private] => Array
        (
            [uno] => 1
            [tres] => 3
            [dos] => Un valor
            [0] => Añadido 1
            [1] => Añadido 2
            [2] => Añadido 3
        )

)

Tabla de contenidos