Autoload-Funktion funktioniert nicht

  • Themenstarter Themenstarter GeistertruckSepp
  • Beginndatum Beginndatum
G

GeistertruckSepp

Ich habe hier eine Autoload funktion die nicht funktioniert

PHP:
$paths_config = array('include/class/');
    $packages_config = array('');

    function __autoload($class) {
        $class = strtolower($class);
        for($i = 0; $i < count($packages_config); $i++)
        {
            for($j = 0; $j < count($paths_config); $j++)
            {
                $include_path = $paths_config[$j] . $packages_config[$i] . $class . '.class.php';
                if(file_exists($include_path))
                {
                    require_once $include_path;
                }
            }
        }
    }

wenn ich es so mache gehts:

PHP:
function __autoload($class_name) {
        require_once 'include/class/' . $class_name . '.class.php';
    }

Ich hoffe jemand entdeckt den Fehler ich hab schon so einiges Probiert

Testweise hab ich die Klasse Test in das Verzeichnis include/class/test.class.php

Es kommt immer die meldung das die klasse nicht gefunden werden konnte
 
Ich habe einmal verschiede Pfade zu klassen-ordner
und dann habe ich die klassen in packages gruppiert
 
@Nord-Süd-Richtung
Deine Aussage stimmt nicht, valide Variablennamen werden nicht durch Schlüsselworte beeinträchtigt. Ein entsprechendes Statement steht sogar auf der von dir gelieferten Seite

Als Vaiablennamen dürfen Sie die Namen benutzen, was aber zu Verwirrungen führen kann.
 
Zuletzt bearbeitet:
Hi

dann nehm ich die Aussage mal zurück ;) Es wäre dennoch hilfreich zu wissen was die Aussage "Ich habe hier eine Autoload funktion die nicht funktioniert" bedeutet :)
 
Gib einmal

PHP:
$paths_config[$j] . $packages_config[$i] . $class . '.class.php'

Diese Werte in der inneren For-Schleife per echo aus und kontrolliere ob die Pfade alle stimmen.

Außerdem solltest du noch einen else-Teil zu deiner If-Verzweigung in den For-Schleifen hinzufügen, dann weißt du, wenn die Datei nicht exisitert. Für das Debugging ist das sinnvoll.
 
Moin,

sowohl $paths_config als auch $packages_config sind globale Variablen und müssen als solche erstmal in __autoload() bekannt gemacht werden.
Schalte mal dein error_reporting an, dann würdest du eine Notice wegen der undefinierten $packages_config bekommen.

Kein Array zum Durchlaufen->keine Datei zum Einbinden->keine Klasse zum Laden.

Zu der Sache ansich: willst du jetzt wirklich bei jeder Klasse erstmal x Verzeichnisse durchlaufen lassen, und schauen, ob dort irgendeine Klasse existiert...und falls nicht den User mit einem Fatal Error sitzen lassen?

Was machst du, wenn du mal 2 identische Skriptnamen für diese Dateien verwendest....ich finde das recht murksig, unperformant und nicht risikofrei, was du dort vorhast.


Wenn du dort ein wenig Übersicht schaffen willst, dann verwende den Klassennamen selbst, um anhand dessen den korrekten Aufenthaltsort des Skriptes zu finden, und nicht solch Lotterie.
 
Zurück