URL: https://www.overclockers.at/coding-stuff/php_modulprogrammierung_112707/page_1 - zur Vollversion wechseln!
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;
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
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
Das weisst du bei dem Konstrukt auch nicht:Zitateval, wird genommen, da ich ja nicht weiß welche klassen dann eingebunden werden
$class kann alles sein, ist halt ne VariableCode:$object = new $class;
- 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