ArrayObject à plusieurs dimensions : Accéder via une méthode
Salut à tous :D
Je cherche le moyen d'accéder par le biais d'une méthode à un élément d'un Objet ArrayObject à 2 dimensions (par exemple).
A une dimension, pas de problème :
Code:
1 2 3 4 5
|
$arrayObj = new ArrayObject(array('premier' => 'un'));
echo $arrayObj['param'];
// Ou
echo $arrayObj->offsetGet('premier'); |
A 2 dimensions aussi :
Code:
1 2 3 4 5
|
$arrayObj = new ArrayObject(array('premier' => array('un' => '1')));
$arrayObj['premier']['un'].'<br />';
// Ou
echo $arrayObj->premier['un'].'<br />'; |
Mais par le biais d'une méthode, alors là ???
Quelque chose du genre :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
class UneClasse {
private $arrayObj;
public function __construct() {
$this->arrayObj = new ArrayObject(array('premier' => array('un' => '1')));
}
public function getArrayObj($key) {
return ???
}
} |
Je pensais que faire quelque chose du genre pouvait se faire :
Code:
1 2 3 4 5
|
public function getArrayObj($key) {
// ---> $key serait une chaine comme : premier['un']
return $this->arrayObj->{$key};
} |
Mais ça marche pô :cry:
Puis passer une chaine en argument pour un clé à 2 dimension me semble pas très zen.
Parcourir (genre foreach) le tableau me parait ingérable (beaucoup trop hasardeux).
Sinon, j'ai pensé à mettre plusieurs paramètres à la méthode, genre getArrayObj($key, $key_dim2 = NULL, $key_dim3 = NULL, ...).
Ca pourrait ce faire, mais c'est pas très académique, non ?
Il y aurait peut être les fonctions func_num_args() et func_get_args, mais là je ne vois pas trop pour le moment.
Le dernier recourt serait de rendre $arrayObj publique et statique, mais ça m'embête un peu beaucoup.
S'il quelqu'un a une piste ;)