Toon posts:

[PHP] Variable class . Hoe ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi.,

ik heb een aantal classen die allemaal beginnen met mod_
voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class mod_nieuws
{

}

class mod_content
{

}

class mod_contact
{

}


ik wil ze kunnen openen als ik bijvoorbeeld mod_ en $module heb. $module is dan bijvoorbeeld content.
Kan ik dan zoiets doen:
PHP:
1
2
3
include ("classes.php");
$module = "content";
$mod = New {"mod_" . $module};

doen? Dit werkt uiteraard niet.. maar is er een manier om als ware een string samen te voegen en daarna te gebruiken als class naam ?

alvast bedankt.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

volgens mij werkt het wel zo....

PHP:
1
2
$module="mod_content";
$class=new $module;


offtopic:
Niet getest

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
LuCarD schreef op 20 oktober 2002 @ 13:07:
volgens mij werkt het wel zo....

PHP:
1
2
$module="mod_content";
$class=new $module;


offtopic:
Niet getest
woei.. hij werkt.. tx buddy! wist niet dat ie zo simpel was eigenlijk :D tx

  • arcadis
  • Registratie: Februari 2002
  • Laatst online: 16-02-2009

arcadis

Gele Stip

volgens mij klopt het wat LuCarD zegt en het kan volgens mij nog makkelijker:

<?
$class = new 'mod' . $module;
?>

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

arcadis schreef op 20 oktober 2002 @ 13:10:
volgens mij klopt het wat LuCarD zegt en het kan volgens mij nog makkelijker:

<?
$class = new 'mod' . $module;
?>
Nee hoor... je bent de underscore vergeten :+ :o

Programmer - an organism that turns coffee into software.


Verwijderd

Topicstarter
arcadis schreef op 20 oktober 2002 @ 13:10:
volgens mij klopt het wat LuCarD zegt en het kan volgens mij nog makkelijker:

<?
$class = new 'mod' . $module;
?>
werkt niet

  • arcadis
  • Registratie: Februari 2002
  • Laatst online: 16-02-2009

arcadis

Gele Stip

't was te proberen ;)

PHP geeft inderdaad een error bij mijn methode. Ik had 't zelf nog nooit uitgeprobeerd, maar ik kan zo gauw ook niet verzinnen waarom het gebruiken van een variabele wel werkt en een concatenated string niet.

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

blijkbaar is een concatenated string geen T_STRING... Hij verwacht namelijk een T_STRING of een T_VARIABLE. nou ja, je kunt nog altijd zeggen:

PHP:
1
2
$module="mod_".$module; 
$class=new $module;

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Heel ander vraagje... kun je dan ook nog constructors meegeven?
(ik heb hier geen PHP bij de hand...)

Localhost, sweet localhost


  • tomato
  • Registratie: November 1999
  • Niet online
Je bedoelt argumenten voor de constructor?

Ja hoor, je kunt gewoon zoiets doen:
PHP:
1
$class = new $naam($hoi, $mai);

Verwijderd

Volgens mij kan dat wel. Ik ken alleen de code even niet uit mijn hoofd

code:
1
2
3
$name = "content";
$$module="mod_".$name
class=new $module;


Je zou de PHP manual ff moeten checken op variabelen in variabelen gebruiken.

  • Grum
  • Registratie: Juni 2001
  • Niet online
$$module gaat nergens over :) ($module wel daarintegen)

er is geen variabele module dus je zal een fijna parse error krijgen :)
Pagina: 1