[php] class maken met variabele

Pagina: 1
Acties:

  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
ik wil modules (classes) van een site dynamisch inladen. dit doe ik door de inhoud van de classes dir te nemen en per entry de class name te bepalen uit de filename.
echter nu komt het probleem... hoe kan ik een nieuwe klasse creeren als ik een variabele heb...

pseudo code:

$modulenaam="emailadressen";

$t=new $modulenaam();

bestaat hier (net als voor dynamisch aanroepen van functies call_user_func) ook een methode voor?

Steun Elkaar, Kopieer Nederlands Waar!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:21

Creepy

Tactical Espionage Splatterer

code:
1
2
3
4
// instantiate 2 objects

$veggie = new Vegetable(true,"blue");
$leafy = new Spinach();

Komt van http://www.php.net/manual/en/ref.classobj.php
Zoeken op classes in de PHP function list..

edit:

Ik moet iets beter lezen :)

Maar dit kan vast wel in php m.b.v. eval o.i.d.


[edit2]
En bij het commentaar bij de aangegeven page staat dit:
PHP:
1
<?class a{        function bla()        {                echo "1\n";        }}class b{        function bla()        {                echo "2\n";        }}$class = "a";$test = new $class;$test->bla();$class2 = "a";$test2 = new $class2;$test2->bla();?>

This will print:

1
2

Whehe.. en er zit ene kleine type in dit voorbeeld :) (rechtstreeks gecopy/paste van de site)

$class2 = "a" moet zijn $class2 = "b" :)
Maar het werkt dus wel!

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
Op woensdag 26 juni 2002 11:09 schreef Creepy het volgende:
Maar dit kan vast wel in php m.b.v. eval o.i.d.
ik zie net dat het kan met eval... maar er bestaat dus niet een voorbedachte eventueel wat "veiligere" functie voor?

Steun Elkaar, Kopieer Nederlands Waar!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:21

Creepy

Tactical Espionage Splatterer

Zie edit2 in mijn vorige post :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Skinkie
  • Registratie: Juni 2001
  • Laatst online: 09-06-2020

Skinkie

Op naar de 500

Topicstarter
ik zie het... maar hoe zorg ik er nou voor dat als ik functie bla aanroep dat dan functie bla van a wordt aangeroepen en niet functie bla van b?

Steun Elkaar, Kopieer Nederlands Waar!


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Skinkie:
ik zie het... maar hoe zorg ik er nou voor dat als ik functie bla aanroep dat dan functie bla van a wordt aangeroepen en niet functie bla van b?
Volgens mij gebruik jij classes waar je namespaces wilt gebruiken, als ik 't zo zie. En helaas... namespaces worden (nog) niet ondersteund door PHP.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

$modulenaam="emailadressen";

$t=new $modulenaam();
Misschien zit ik er compleet naast maar wil je misschien dan $modulenaam(); vertaald wordt in emailadressen(); ?

zo ja probeer dit eens:
code:
1
2
3
$modulenaam = "emailadressen";

$t = new $$modulenaam();

Shoot me if I am wrong :)

Verwijderd

het moet toch zo zijn?

$test = new {$class}();

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 00:21

Creepy

Tactical Espionage Splatterer

Op woensdag 26 juni 2002 11:21 schreef Skinkie het volgende:
ik zie het... maar hoe zorg ik er nou voor dat als ik functie bla aanroep dat dan functie bla van a wordt aangeroepen en niet functie bla van b?
als $class="a"
dan na
code:
1
2
$test = new $class
$test->bla

roep je a->bla aan

en als $class=b was geweest aan het begin, dan roep je b->bla aan...

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1