[PHP] Variabele Variabelenaam/Klassenaam

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig aan een script waarbij op grond van gegevens uit een database een object moet worden gemaakt van een bepaalde klasse. Nu is het probleem dat niet van tevoren bekend is van welke klasse dit object moet worden gemaakt.

Op basis van een lijst met namen uit de database wordt nu per naam de klasse-file include (bijvoorbeeld class.klasse1.php) dit kan nog heel goed variabel. Maar vervolgens moet het object worden aangemaakt, maar hoe kan dit variabel:

$<dit is variabel> = new <dit is variabel>();

Hoe kan ik dit voor elkaar krijgen?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Dat is wel een 'vieze' manier van programeren, variabele variabelen. Dan wordt je code er niet duidelijker en overzichtelijker op, voor jezelf en voor anderen. Maar het kan in PHP en wordt best wel vaak gebruikt voor dit soort toepassen.

Totzover mijn persoonlijke mening over variabele variabelen.

Hier vind je de PHP documentatie over dit onderwerp.

Acties:
  • 0 Henk 'm!

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 04-02-2022

tombo_inc

uhuh

variabele variabelen doe je zo:
PHP:
1
2
3
4
5
6
7
8
$blaat = 'woei';
$$blaat = 'hallo';

echo($blaat); // output "woei"
echo($$blaat); //ouput "hallo";

//de variabele naam $$blaat is nu eigenlijk $woei
//voor meer info kijk op php.net

[ Voor 12% gewijzigd door tombo_inc op 24-03-2005 11:32 ]

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Vrij simpel:
PHP:
1
2
3
$varName = $waarde;
$className = $waarde;
$$varname = new $className();

Waar je echter ook voor kunt kiezen is een array waarin je dit bijhoudt. Dat is veel netter. Ook kun je het instantieren afsplisten middels een factory:
PHP:
1
2
3
4
5
6
function getObject($name)
{
  return new $name();
}
$objecten = array();
$objecten[$waarde] = getObject($waarde);

Zo kun je nog eventueel een switch toevoegen in plaats van return new $name();

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de reacties!