Dynamische Klasseninstanz

Tach Community,

ich programmiere gerade mein eigenes Modulsystem.
aus einem Verzeichnis werden Module eingelesen (dateinamen)
eingelesen und dieser erst inkludiert und dann sollen automatisch
objekte aus den modulklassen gebildet werden.

beispiel:

/inc/modul1.inc.php
/inc/modul2.inc.php

liegen im verzeichnis.
mein script liest die dateinamen und extraiiert den modulnamen.

also…modul1 und modul2
diese werden dann automatisch require_once(modul1) etc…
includiert.

jedes modul enthaelt eine klasse, die natuerlich so heisst wie das modul

modul1.inc.php — > class modul1{}

jetzt moechte ich dass ich automatisch ein objekt dieser modulklasse bilden kann, damit der darin enthaltene konstruktor aufgerufen wird.

wie mache ich das?

also im prinzip habe ich einen array mit modulnamen

modulArr[„modul1“,„modul2“,„modul33“];

und moechte daraus

$modBuild = new modul1();
$modBuild = new modul2();
$modBuild = new modul33();

machen…

ich hoffe ich konnte mich kompliziert genug ausdruecken.

danke

PixelKoenig

Hallo

schau dir mal die function
http://de2.php.net/manual/de/function.call-user-meth…
an, könnte sein das, dass das ist das du suchst :wink:

Gruß
Phillip

nee.leider nicht
hi,

die Richtung schon nicht schlecht…
allerdings deprecated… und letztendlich nicht das was ich suche.
bevor ich eine methode in einem mir unbekannten objekt aufrufe… muss ich das unbekannte objekt erstmal erzeugen.

es muesste also sowas sein wie:

$myObj = new call_user_class($classArr[0]);

merci

Grusz

Pixel

also…modul1 und modul2
diese werden dann automatisch require_once(modul1) etc…
includiert.

schau mal: http://de.php.net/autoload

jetzt moechte ich dass ich automatisch ein objekt dieser
modulklasse bilden kann, damit der darin enthaltene
konstruktor aufgerufen wird.

wie mache ich das?

also im prinzip habe ich einen array mit modulnamen

modulArr[„modul1“,„modul2“,„modul33“];

http://de.php.net/manual/de/language.variables.varia…

foreach ($modulArr as $classname)
 { $foo = new $classname(); }

hmm…ansatzweise
hi,

schau mal: __autoload()

hmmmm…
immer noch nicht ganz was ich brauche.

die klassen zu inkludieren ist kein problem.
aber ich moechte ein objekt aus den inkludierten
klassen bilden.

// Array aus n Klassen
$classArr = array("meineKlasse1","nochNeKlasse" ... );
foreach($classArr as $myClass){
 // inkludiere Klasse
 require\_once("./inkl/".$myClass.".inc.php");

 // Bilde Objekt
 $$myClass."Obj" = new $$myClass(); // 
 // meineKlasse1Obj = new meineKlasse1();

}

Soviel zur Idee.
In der Datei meineKlasse1.inc.php befindet sich dann eine Klasse mit gleichem namen. Somit sollte dann spaeter im script ein aufruf mit
$meineKlasse1Obj->irgendeineMethode(); moeglich sein.

ich kann nur kein Objekt erzeugen… jedenfalls nicht dynamisch.

merci

Pixel

// Bilde Objekt
$$myClass.„Obj“ = new $$myClass(); //

du must es richtig notieren: new $myClass()
und ich wuerde die instanzen in einem assoziat. array ablegen.

du must es richtig notieren: new $myClass()
und ich wuerde die instanzen in einem assoziat. array ablegen.

ja. genau. klasse. funktioniert.
ich bin begeistert :smile: danke schoen.

und das beste… meine IDE unterstuetzt dynamische klassen habe ich gerade festgestellt…

bei soviel dynamic muss ich meinen entwicklerpopo aufm stuhlfesttackern damit ich nicht gleich lostanze. :smile:

grusz und dickes danke

Pixel