Salut à tous

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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
$arrayObj = new ArrayObject(array('premier' => 'un'));
echo $arrayObj['param'];
// Ou
echo $arrayObj->offsetGet('premier');
A 2 dimensions aussi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
    public function getArrayObj($key) {
        // ---> $key serait une chaine comme : premier['un']
        return $this->arrayObj->{$key};
    }
Mais ça marche pô
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