L'interface ArrayAccess
Interfaces et Classes Prédéfinies
(PHP 5, PHP 7, PHP 8)
Introduction
Interface permettant d'accéder aux objets de la même façon que pour les tableaux.
Synopsis de la classe
interface ArrayAccess {
/* Méthodes */
public offsetExists(mixed $offset): bool
public offsetGet(mixed $offset): mixed
public offsetSet(mixed $offset, mixed $value): void
public offsetUnset(mixed $offset): void
}
Exemple #1 Exemple basique
<?php
class Obj implements ArrayAccess {
private $container = array();
public function __construct() {
$this->container = array(
"un" => 1,
"deux" => 2,
"trois" => 3,
);
}
public function offsetSet($offset, $value) {
if (is_null($offset)) {
$this->container[] = $value;
} else {
$this->container[$offset] = $value;
}
}
public function offsetExists($offset) {
return isset($this->container[$offset]);
}
public function offsetUnset($offset) {
unset($this->container[$offset]);
}
public function offsetGet($offset) {
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
}
$obj = new Obj;
var_dump(isset($obj["deux"]));
var_dump($obj["deux"]);
unset($obj["deux"]);
var_dump(isset($obj["deux"]));
$obj["deux"] = "Une valeur";
var_dump($obj["deux"]);
$obj[] = 'Ajout 1';
$obj[] = 'Ajout 2';
$obj[] = 'Ajout 3';
print_r($obj);
?>
Résultat de l'exemple ci-dessus est similaire à :
bool(true)
int(2)
bool(false)
string(10) "Une valeur"
obj Object
(
[container:obj:private] => Array
(
[un] => 1
[trois] => 3
[deux] => Une valeur
[0] => Ajout 1
[1] => Ajout 2
[2] => Ajout 3
)
)
Sommaire
- ArrayAccess::offsetExists — Indique si une position existe dans un tableau
- ArrayAccess::offsetGet — Position à lire
- ArrayAccess::offsetSet — Assigne une valeur à une position donnée
- ArrayAccess::offsetUnset — Supprime un élément à une position donnée