• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Denkfehler? oder fehler im Code

dani33

Neues Mitglied
Hier ist mein array (mein code), lieder hab ich irgendwie einen fehler, im den roten abschnitt,
ich finde ihn leider nicht.

# array als schlüssel

foreach($a as $k)
{

# schlüssel in lib? file existiert? lade es : ansonsten gib fehler aus

array_key_exists($k, $lib) ? file_exists(ROOTDIR.$lib[$k]) ?
require_once ROOTDIR.$lib[$k] : die("Missing Class: ".$k);

# name der klasse erstellen:
# meine klassen stehen mit "inc/BEYOND.class.CLASSNAME.php"
# oder "inc/BEYOND.class.CLASSNAME.IRGENDWAS.php" in der lib
# diese Teil-strings müssen ersetzt werden, außerdem sind alle object-namen/klassen-namen in uppercase
# (zumindest bei mir)

# "inc/BEYOND.class.classname.php" => class: CLASSNAME => obj: $CLASSNAME

$__c = strtoupper(str_replace(array("inc/BEYOND.class.", ".php", "."), array(null, null, "_"), $lib[$k]));

# prüfen, ob die geladene Datei eine gleichnamige Klasse enthält;

class_exists($__c) ? null : die("Invalid class- or file-name detected: ".$__c);

}

break;
 
Und wenn Du von "Fehler" sprichst, gibt es vlt. eine Fehlermeldung?

Eine Bitte: Wenn Du Quellcode hier postest formatiere ihn bitte mit Code-Tags. Dann wäre er gleich schöner formatiert.
 
Ich wollte diese Include System verwenden um Dateien nach der Version zu prüfen.
wollte ihn selber korrigieren aber bekomme es nicht hin :(

Ein anderes Include-System

PHP:
$a)    {          # switch level      switch($l)      {                    # interfaces laden              case "i":                   # array als schlüssel                                  foreach($a as $k)                   {                    # schlüssel in lib? file existiert? lade es : ansonsten gib fehler aus                    array_key_exists($k, $lib) ? file_exists(ROOTDIR.$lib[$k])?                             require_once ROOTDIR.$lib[$k] : die("Missing Class: ".$k);                                    }                                        break;                                                          # normale class-files laden                                    case "c":                                # array als schlüssel                  foreach($a as $k)                   {                    # schlüssel in lib? file existiert? lade es : ansonsten gib fehler aus                                      array_key_exists($k, $lib) ? file_exists(ROOTDIR.$lib[$k]) ?                             require_once ROOTDIR.$lib[$k] : die("Missing Class: ".$k);                        # name der klasse erstellen:                    # meine klassen stehen mit "inc/BEYOND.class.CLASSNAME.php"                     # oder "inc/BEYOND.class.CLASSNAME.IRGENDWAS.php" in der lib                    #     diese Teil-strings müssen ersetzt werden, außerdem sind alle object-namen/klassen-namen in uppercase                    #     (zumindest bei mir)                    #   "inc/BEYOND.class.classname.php" => class: CLASSNAME => obj: $CLASSNAME                    $__c = strtoupper(str_replace(array("inc/BEYOND.class.", ".php", "."), array(null, null, "_"), $lib[$k]));                    # prüfen, ob die geladene Datei eine gleichnamige Klasse enthält;                     class_exists($__c) ? null : die("Invalid class- or file-name detected: ".$__c);                                      }                                        break;                                                          # auto-inits laden                                    case chr(0x61):                                foreach($a as $k)                   {                    # schlüssel in lib? file existiert? lade es : ansonsten gib fehler aus                        array_key_exists($k, $lib) ? file_exists(ROOTDIR.$lib[$k]) ?                             require_once ROOTDIR.$lib[$k] : die("Missing Class:" .$k);                    # name der klasse erstellen:                    # meine klassen stehen mit "inc/BEYOND.class.CLASSNAME.php"                     # oder "inc/BEYOND.class.CLASSNAME.IRGENDWAS.php" in der lib                    #       diese Teil-strings müssen ersetzt werden, außerdem sind alle object-namen/klassen-namen in uppercase                    #       (zumindest bei mir)                    #   "inc/BEYOND.class.classname.php" => class: CLASSNAME => obj: $CLASSNAME                    $__c = strtoupper(str_replace(array("inc/BEYOND.class.", ".php", "."), array(null, null, "_"), $lib[$k]));                    # enthält die geladene Datei eine gleichnamige Klasse?                     #     dann erstelle ein gleichnamiges Object aus ihr : ansonsten abbrechen                    class_exists($__c) ? ${$__c} = new $__c() : die("Invalid class- or file-name detected: ".$__c);                    # ich hab einen Test laufen:                    # alle meine Klassen haben die Methode "class_info" die die Versionsnummer und den Klassennamen,                    # in Form von array(0 => 1000, 1 => "classname"), zurückgibt:                    # die Zeile prüft die Klasse auf Validität.                    # existiert zur Klasse eine Methode ("class_info")?                     #     dann hole die Info zur Klasse : ansonsten markiere die Klasse als anonym                    method_exists(${$__c}, "class_info") ? $info[$__c] = ${$__c}->class_info() : $no_info[] = $__c;                        }                                              break;                              }          }     # ist die Klasse anonym, wird sie abgewiesen    if(isset($no_info) && is_array($no_info)) foreach($no_info as $c)         die("The class ".$c." isn't a valid BEYOND-element.");        # temporär mal die aktuelle und benötigte Versionsnummer (quelle muss später natürlich eine andere sein:    $v = 1000;        # existiert das array "info"    if(is_array($info))        {            # parse es als class nach dimensions      foreach($info as $c => $d)       {        # ist die enthaltene Versionsnummer nicht die geforderte, Abbruch        if($d[0] !== $v) die("The class ".$c." isn't a valid BEYOND-element: Detected Version Code: ".$d[0]."");            # ist der Klassenname ungültig, Abbruch        if($d[1] !== strtolower($c)) die("The class ".$c." isn't a valid BEYOND-element: Detected Class Name: ".$d[1]."");                  }          } ?>
 
Zuletzt bearbeitet:
Zurück
Oben