Standard PHP Library (SPL) – rozhraní ArrayAccess
- 31. Březen 2009
- Publikováno v PHP
- Napište komentář
Rozhraní ArrayAccess umožňuje přistupovat k objektům jako by to byla pole.
Rozhraní ArrayAccess vypadá nějak takto:
{
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.
{
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.
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:
offsetGet( $offset )
Metoda vracející hodnotu specifikovanou klíčem $offset; zavolá se pokud budeme z objektu páčit hodnotu tak jako z pole:
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:
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:
Easy, no ni?
Rekl bych, ze to neni rozhrani, aleabstract trida. Viz. http://cz.php.net/manual/en/class.arrayaccess.php Proto je mozne misto implementace podedit od ArrayAccess. Zalezi na vyuziti, ale je to taky cesta:)
Rozhodně jde o interface a tudíž není možné dědit.
PHX asi myslel ArrayObject http://cz.php.net/manual/en/class.arrayobject.php . ArrayAccess je doopravdy jenom interface.
ffs, chybí ti tam dolar u názvu proměnný