Avec PHP 5, de nouvelles possibilités sont apparus, notament la possibilité de déguiser vos objets en tableaux, chose vraiment très pratique.

SPL est une collection d’interfaces et de classes pour résoudre des problèmes standards. Elle a été ajoutée dans PHP 5.

Documentation :
http://fr.php.net/manual/fr/ref.spl.php
http://www.php.net/~helly/php/ext/spl/

ArrayAccess

ArrayAccess est l’interface qui permettra à vos objets de se faire passer pour des tableaux, son utilisation est vraiment simple, comme d’habitude ;-) un exemple suffit pour comprendre :

array = $array;
		}

		// Doit retourne TRUE / FALSE si l’offset existe
		public function offsetExists($offset) {
			return isset($this->array[$offset]);
		}

		// Retourne la valeur pour $offset
		public function offsetGet($offset) {
			return $this->array[$offset];
		}

		// Entre la valeur $value pour $offset
		public function offsetSet($offset, $value) {
			$this->array[$offset] = $value;
		}

		// Supprime la valeur à l’$offset
		public function offsetUnset($offset) {
			unset($this->array[$offset]);
		}
	}

	$array = array(’toto’=>’titi’, 3=>’grut’);
	$montableau = new MonTableau($array);

	// test des actions possibles sur l’objet
	echo $montableau[’toto’];
	var_dump(isset($montableau[’tutu’]));
	$montableau[’titi’] = ‘hello’;
	unset($montableau[’titi’]);
?>

Notre objet peut donc maintenant être utilisé comme un tableau.

ATTENTION : Il y a tout de même une restriction, vraiment pas pratique, il est impossible de mettre des références dans le tableau virtuel. Donc impossible de simuler un tableau à 2 dimensions :

echo $montableau['toto']['titi'];

Vous aurez alors l’erreur :

Fatal error:  Objects used as arrays in post/pre increment/decrement must return values by reference in *********** on line **

Plus d’informations sur le pourquoi du comment de l’erreur :
http://bugs.php.net/bug.php?id=34783
http://bugs.php.net/bug.php?id=32983