En PHP, l'interface ArrayAccess est utilisée pour développer une classe qui fournit un accès de type tableau à l'une des propriétés du tableau. Une telle propriété de tableau peut être manipulée lors de la création d'un objet sans l'exposer. L'interface ArrayAccess définit les méthodes abstraites suivantes
ArrayAccess { /* Methods */ 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 }
ArrayAccess::offsetExists - Si le décalage existe
ArrayAccess::offsetGet - Le décalage à récupérer < /p>
Ar rayAccess : :offsetSet - Attribue une valeur au décalage spécifié
ArrayAccess::offsetUnset - Annule le décalage.
ArrayAccess::offsetUnset - Décalage non défini. p>
Dans l'exemple ci-dessous, le tableau associatif est une propriété privée interne de maclasse. La clé agit comme un décalage. Nous pouvons définir, récupérer et supprimer des éléments dans un tableau. Si aucun décalage n'est donné, il sera traité comme un entier, incrémenté à l'index suivant à chaque fois.
Démonstration en direct
<?php class myclass implements ArrayAccess { private $arr = array(); public function __construct() { $this->arr = array( "Mumbai" => "Maharashtra", "Hyderabad" => "A.P.", "Patna" => "Bihar", ); } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->arr[] = $value; } else { $this->arr[$offset] = $value; } } public function offsetExists($offset) { return isset($this->arr[$offset]); } public function offsetUnset($offset) { unset($this->arr[$offset]); } public function offsetGet($offset) { return isset($this->arr[$offset]) ? $this->arr[$offset] : null; } } $obj = new myclass(); var_dump(isset($obj["Mumbai"])); var_dump($obj["Mumbai"]); unset($obj["Mumbai"]); var_dump(isset($obj["Mumbai"])); $obj["Bombay"] = "Maharashtra"; var_dump($obj["Bombay"]); $obj["Chennai"] = 'Tamilnadu'; $obj[] = 'New State'; $obj["Hyderabad"] = 'Telangana'; print_r($obj); ?>
Le programme ci-dessus montre la sortie suivante
bool(true) string(11) "Maharashtra" bool(false) string(11) "Maharashtra" myclass Object( [arr:myclass:private] => Array( [Hyderabad] => Telangana [Patna] => Bihar [Bombay] => Maharashtra [Chennai] => Tamilnadu [0] => New State ) )
Les propriétés de tableau de la classe peuvent également être des tableaux indexés. Dans ce cas, l'index de l'élément (à partir de 0) fait office de décalage. Lorsque la méthode offsetSet(0 est appelée sans le paramètre offset, l'index du tableau est incrémenté jusqu'au prochain entier disponible
<?php class myclass implements ArrayAccess { private $arr = array(); public function __construct() { $this->arr = array("Mumbai", "Hyderabad", "Patna"); } public function offsetSet($offset, $value) { if (is_null($offset)) { $this->arr[] = $value; } else { $this->arr[$offset] = $value; } } public function offsetExists($offset) { eturn isset($this->arr[$offset]); } public function offsetUnset($offset) { unset($this->arr[$offset]); } public function offsetGet($offset) { return isset($this->arr[$offset]) ? $this->arr[$offset] : null; } } $obj = new myclass(); var_dump(isset($obj[0])); var_dump($obj[0]); unset($obj[0]); var_dump(isset($obj[0])); $obj[3] = "Pune"; var_dump($obj[3]); $obj[4] = 'Chennai'; $obj[] = 'NewDelhi'; $obj[2] = 'Benguluru'; print_r($obj); ?>
Le programme ci-dessus affiche la sortie suivante
bool(true) string(6) "Mumbai" bool(false) string(4) "Pune" myclass Object( [arr:myclass:private] => Array( [1] => Hyderabad [2] => Benguluru [3] => Pune [4] => Chennai [5] => NewDelhi ) )
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!