php + modulprogrammierung

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_modulprogrammierung_112707/page_1 - zur Vollversion wechseln!


Luki schrieb am 22.04.2004 um 15:44

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!


Rektal schrieb am 22.04.2004 um 15:56

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 schrieb am 22.04.2004 um 16:07

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 schrieb am 22.04.2004 um 16:10

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 schrieb am 22.04.2004 um 16:23

:bash: - danke für die hilfe, hab nur ein this in der class vergessen...




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025