Fonction transformer un tableau en objet

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 183 fois - Téléchargée 28 fois

Contenu du snippet

Bon, honnêtement, je n'ai pas encore trouvé d'utilité à cette fonction, mais je l'ai codé, donc autant en faire profiter les autres !
Donc c'est simple, vous avez un tableau du style:

array('test1' => 'valeur', 'test2', 'test3' => array(1, 3))

j'ai fait exprès de faire des types de clé différentes... La fonction gère les tableaux multidimensionnels.

pour obtenir un objet, il suffit d'écrire:

$objet = array_to_object($tableau, 'nomdelaclasse');

si vous aviez une valeur d'enregistrée sous $tableau['key'], elle sera accessible par $objet->key

$tableau contient le tableau source et 'nomdelaclasse' est le nom de la classe permettant la construction de l'objet.
Attention, si vous avez des clès de tableau numérique comme $tableau[2], elle ne sera pas ajoutée a l'objet, (car $tableau->2, c'est invalide !) sauf si vous définissez un 3e argument:

$objet = array_to_object($tableau, 'nomdelaclasse', '_');

le 3e argument est un préfixe. En utilisant cette méthode, $tableau[2] donnera $objet->_2 (et ça c'est valide!)

Voilà, au bonheur de celui qui en aura trouvé une utilité interressante ;)

Source / Exemple :


<?php

function array_to_object($array, $class_name, $numbers = false)
{
	if ( is_array($array) && count($array) > 0 )
	{
		$var_names = array();
		$var_values = array();

		foreach ( $array as $key => $value )
		{
			if ( !is_numeric($key) )
			{
				$value = serialize($value);

				$var_names[] = '$' . $key;
				$var_values[] = '$this->' . $key . ' = unserialize(\'' . $value . '\');';
			}
			elseif ( $numbers != false )
			{
				$value = serialize($value);

				$var_names[] = '$' . $numbers . $key;
				$var_values[] = '$this->' . $numbers . $key . ' = unserialize(\'' . $value . '\');';
			}
		}

		eval('class ' . $class_name . ' {' . "\n" . 'var ' . implode(', ', $var_names) . ';' . "\n" . 'function ' . $class_name . '() {' . "\n" . implode("\n", $var_values) . "\n" . '}' . "\n" . '}' . "\n" . '$object = new ' . $class_name . ';');

		return $object;
	}
	else
	{
		return false;
	}
}

?>

A voir également

Ajouter un commentaire

Commentaire

Messages postés
12
Date d'inscription
jeudi 12 août 2004
Statut
Membre
Dernière intervention
11 avril 2005

Bon apparement il existe la fonction settype de php qui fait la même chose alors.... au temps pour moi !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.