Rozhraní ArrayAccess umožňuje přistupovat k objektům jako by to byla pole.

Rozhraní ArrayAccess vypadá nějak takto:

PHP:
interface ArrayAccess
{
    function offsetExists( $offset );

    function offsetGet( $offset );

    function offsetSet( $offset, $value );

    function offsetUnset( $offset );
}

Třída, která implementuje rozhraní ArraAccess, musí tedy implementovat všechny zmíněné metody.

PHP:
class MojeTrida implements ArrayAccess
{
    function offsetExists( $offset ){
        /*nějaký kód*/
    }
    function offsetGet( $offset ){
        /*nějaký kód*/
    }
    function offsetSet( $offset, $value ){
        /*nějaký kód*/
    }
    function offsetUnset( $offset ){
        /*nějaký kód*/
    }
}

Máme vytvořenou třídu implementující rozhraní ArrayAccess a můžeme si tedy vytvořit její instanci.

PHP:
$mujObjekt = new MojeTrida();

offsetExists( $offset )
Tato metoda by měla ověřit, zda existuje hodnota pro klíč, specifikovaný hodnotou parametru $offset a měla by vracet true nebo false. Metoda se zavolá pokud použijeme objekt například následujícím způsobem:

PHP:
if ( isset( $mujObjekt["mujOffset"] ) ){
   /*nějaký kód*/
}

offsetGet( $offset )
Metoda vracející hodnotu specifikovanou klíčem $offset; zavolá se pokud budeme z objektu páčit hodnotu tak jako z pole:

PHP:
echo $mujObjekt["mujOffset"];

offsetSet( $offset, $value )
Metoda přiřazující ke klíči $offset hodnotu $value; použije se pokud budeme do objektu cpát data tak jako do pole:

PHP:
$mujObjekt["mujOffset"] = "mojeHodnotnáData";

offsetUnset( $offset )
Metoda odstraní položku specifikovanou klíčem $offset. Zavolá se pokud budeme chtít z objektu odstranit data stejným způsobem jako se odstraňuje položka pole:

PHP:
unset( $mujObjekt[33] );

Easy, no ni?