Hey Leute,
ich wende mich heute an das Forum - besonders an die Fortgeschrittenen - weil ich etwas umsetzen möchte, wo ich selber etwas ans Grübeln komme.
Und zwar wollte ich eine Klasse erstellen, die automatisch ein Verzeichnis ausliest, die dortigen Klassen öffnet und ausführt, sodass sie dann nutzbar sind. Die Klasseninstanzen sollen dabei in $this->variablen gespeichert werden.
Das unglaubliche Problem - die Klassen zu öffnen - besonders, weil man nicht weiß wie viele es sind und wie sie heißen.
Ist das überhaupt möglich? Hier, was ich bis jetzt auf die Beine gestellt habe:
Ich habe ein Verzeichnis, das so aussieht:
Hierbei wird im Ordner files Dateien zwischengespeichert, in modules sind dann alle Unterklassen, die ich öffnen möchte. frameBundle.class.php ist die Hauptklasse, die die öffnen soll und layout.php ist nur eine Testdatei, die frameBundle.class.php öffnet.
In modules habe ich bis jetzt nur eine Unterklasse, die ich errorHandler.module.class genannt habe. Sie ist an sich fertig.
Nun hier der frameBundle.class.php :
Alles noch ein bisschen verwurstelt. Habe da noch einige Sachen ausprobiert
Wäre über eine rege Diskussion sehr erfreut.
Grüße,
Eb aka Areiker
ich wende mich heute an das Forum - besonders an die Fortgeschrittenen - weil ich etwas umsetzen möchte, wo ich selber etwas ans Grübeln komme.
Und zwar wollte ich eine Klasse erstellen, die automatisch ein Verzeichnis ausliest, die dortigen Klassen öffnet und ausführt, sodass sie dann nutzbar sind. Die Klasseninstanzen sollen dabei in $this->variablen gespeichert werden.
Das unglaubliche Problem - die Klassen zu öffnen - besonders, weil man nicht weiß wie viele es sind und wie sie heißen.
Ist das überhaupt möglich? Hier, was ich bis jetzt auf die Beine gestellt habe:
Ich habe ein Verzeichnis, das so aussieht:
Code:
../ ./ files/ modules/ layout.php frameBundle.class.php
In modules habe ich bis jetzt nur eine Unterklasse, die ich errorHandler.module.class genannt habe. Sie ist an sich fertig.
Nun hier der frameBundle.class.php :
PHP-Code:
class frameBundle {
private $fileDir;
private $moduleDir;
private $ressources = array();
public function __construct()
{
// define file
$this->fileDir = './files/installLog.xml';
$this->moduleDir = './modules';
if( file_exists( $this->fileDir ) )
{ // load modules
}
else
{ // install modules
$dir = dir( $this->moduleDir ); // open dir
$this->ressources = array(); // set array
for( ; $read = $dir->read(); )
{
if( $read == '.' || $read == '..' )
{
// because || doesn't work
}
else
{
array_push( $this->ressources, $read );
}
}
$dir->close();
// install modules using ressources
self::installModules();
}
}
private function installModules()
{
if( empty( $this->ressources ) )
{ // no modules loaded
echo( 'BundleError: No Ressources' );
}
else
{
foreach( $this->ressources as $res )
{
require_once( $res );
$moduleName = str_replace( $res, '.module.php' );
$this->$moduleName = new $moduleName;
}
var_dump( $this->errorHandler );
}
}
}
Wäre über eine rege Diskussion sehr erfreut.
Grüße,
Eb aka Areiker
Kommentar