Array de Array dans une class avec ArrayAccess
Posté : 15 mai 2021, 13:22
Bonjour.
Dans l'exemple ci dessous, j'ai une class qui implemente ArrayAccess
Je voudrais faire pour $exemple2 qui utilise la class Exemple, la même chose que $exemple1 qui est du type Array, pour ajouter l'age à l'user. Cela ne fonctionne pas avec la class
Y a-t-il une autre implémentation à faire ?
Je suis un peu perdu.
Merci
Dans l'exemple ci dessous, j'ai une class qui implemente ArrayAccess
Je voudrais faire pour $exemple2 qui utilise la class Exemple, la même chose que $exemple1 qui est du type Array, pour ajouter l'age à l'user. Cela ne fonctionne pas avec la class
<?php
class Exemple implements \ArrayAccess
{
private $container = [];
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ArrayAccess
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;
}
}
$exemple1 = [];
$exemple1['user'] = ['nom' => "Dupont", "prenom" => "Jean"];
$exemple1['user']['age'] = 20;
var_dump($exemple1);
echo "<br><br>";
var_dump($exemple1['user']);
echo "<br><br>";
$exemple2 = new Exemple();
$exemple2['user'] = ['nom' => "Dupont", "prenom" => "Jean"];
$exemple2['user']['age'] = 20;
var_dump($exemple2);
echo "<br><br>";
var_dump($exemple2['user']);
Comment faire?-Résultat-
testforum.php:39: array(1) { 'user' => array(3) { 'nom' => string(6) "Dupont" 'prenom' => string(4) "Jean" 'age' => int(20) } }
testforum.php:41: array(3) { 'nom' => string(6) "Dupont" 'prenom' => string(4) "Jean" 'age' => int(20) }
/testforum.php:48: class Exemple#1 (1) { private $container => array(1) { 'user' => array(2) { 'nom' => string(6) "Dupont" 'prenom' => string(4) "Jean" } } }
testforum.php:50: array(2) { 'nom' => string(6) "Dupont" 'prenom' => string(4) "Jean" }
Y a-t-il une autre implémentation à faire ?
Je suis un peu perdu.
Merci