[PHP] Pensez à STDClass

Il arrive souvent qu'on ai besoin de retourner plusieurs informations distinctes dans une fonction ou une méthode. La plupart du temps, il suffit de retourner un tableau indexé de manière intelligente.

class CSS {
    public function getDeclaration($pDeclaration) {
        list($key, $value) = explode(':', $pDeclaration);
        $key = trim($key);
        $value = trim($value, ' ;');
        return array('key' => $key, 'value' => $value);
    }
};
$ret = CSS::getDeclaration('background-color: #FFFFFF;');
echo 'Clé: '.$ret['key'];
echo 'Valeur: '.$ret['valeur'];

Mais quand on utilise des frameworks tel que symfony où tout (ou presque) est objet, il devient difficile de chainer les éléments.

STDClass[1] vient donc à notre secours.

class CSS {
    public function getDeclaration($pDeclaration) {
        list($key, $value) = explode(':', $pDeclaration);
        $key = trim($key);
        $value = trim($value, ' ;');
        $r = new STDClass;
        $r->key = $key;
        $r->value = $value;
        return $r;
    }
};

Il devient maintenant possible de faire une déclaration du genre :

echo 'Clé: '.CSS::getDeclaration('background-color: #FFFFFF;')->key;
echo 'Valeur: '.CSS::getDeclaration('text-decoration: underline;')->value;

Update :

Petite mise à jour, j'avais fait une petite typo dans le premier bout de code, au niveau des echo-s. Merci Neolitec.

Notes

[1] http://php.net/stdclass

Haut de page