"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

php + modulprogrammierung

Luki 22.04.2004 - 15:44 564 4
Posts

Luki

UNDER CONSTRUCTION
Avatar
Registered: Feb 2002
Location: 127.0.0.1
Posts: 2347
Möchte nun Php-code mit Modulsupport schreiben

habs schon ein bisschen versucht, nur dynamisch will es irgendwie nicht funktionieren

kurz zum aufbau

das fertige modul soll in den ordner /module/modul_name kopiert werden, und dann erkannt und eingebunden werden. der/die ordner beinhaltet eine class.php datei, die zumindest die basic parameter in form einer klasse enthält


mein problem ist es nun ein objekt zu erstellen und dann darauf zuzugreifen..

Code: PHP
$sel_dir = "./modules";
  $handle=opendir($sel_dir);
   
  while ($file = readdir ($handle)) 
  {
  
    if ($file != "." && $file != "..") 
    {
    echo "if $file blu <br>";
       
        if(is_dir($sel_dir."/".$file))
        {             
            echo "Dir: $file";
            $class_name[$i] = $file;
            $i++;           
        }//if-dir
     }//if
  }//while
closedir($handle);
$j = 0;


$class_single = $class_name[0];
$include_dir = "$sel_dir/$class_single/class.php";
echo $include_dir;
include($include_dir);
$modul[0] = "";
$php_code = "\$modul[0] = new ".$class_single.";";
eval($php_code);
$output = $modul[0]->getDesc();
echo "Beschreibung: ".$output; 

der output generiert keinen fehlercode, nur wirft er auch die beschreibung nicht aus, die im class.php file eingegeben wurde

danke für jede Hilfe bzw Problemlösung!
Bearbeitet von Luki am 22.04.2004, 16:24

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
1) error_reporting(E_ALL);
2) var_dump($class_name, $class_single);
3) du musst nicht eval() unbedingt nehmen, sondern kannst auch $object = new $classname; machen.
4) in PEAR findest du zu Hauf Beispiele, da wett' ich meine Unterhose ;) schon was gefunden -> PEAR/Command.php: $obj = &new $class($ui, $config);
5) ich wuerd' eher include_once bzw. require_once nehmen, damit du sicher gehst dass du das file nur einmal jemals einbindest. oefters brauchst dus ja nicht und wuerdest eineen class redeclaration fehler bekommen.
6) Nur am Rande: PHP5 hat ein nettes autoload feature. Wenn du eine Klasse versuchst zu instanzieren, die nicht existiert, versuch er __autoload() { oder aehnlich, vergessen:)} aufzurufen, du u.U. die richige Klasse sucht und included

Luki

UNDER CONSTRUCTION
Avatar
Registered: Feb 2002
Location: 127.0.0.1
Posts: 2347
das ist nur der anfang, wird dann noch weiter ausgebaut, also dann werden module installiert werden können usw... - ich zeigs das resultat dann einfach mal her ;)

eval, wird genommen, da ich ja nicht weiß welche klassen dann eingebunden werden

bis php5 "in prof. verwendung" ist, wirds noch ein zeital dauern, also bleib ich daweil noch beim 4er

falls ich was falsch verstanden habe, bitte ich dies zu berichtigen, wenn möglich mit code als beispiel

Rektal

Here to stay
Registered: Dec 2002
Location: Inside
Posts: 4452
Zitat
eval, wird genommen, da ich ja nicht weiß welche klassen dann eingebunden werden
Das weisst du bei dem Konstrukt auch nicht:
Code:
$object = new $class;
$class kann alles sein, ist halt ne Variable

Mein Tipp eben: error_reporting aufdrehen und var_dump() was geht ;)

Luki

UNDER CONSTRUCTION
Avatar
Registered: Feb 2002
Location: 127.0.0.1
Posts: 2347
:bash: - danke für die hilfe, hab nur ein this in der class vergessen...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz