spl_autoload_register reagiert nur auf Klassen!

LukaszRT

Grünschnabel
Ich habe ein Problem wo auch Chagpt4 am Ende ist. Und zwar folgender Script:

PHP:
<?php
function autoload($class) {
    // Testen, ob die Datei für eine Klasse existiert
    $class_file = __DIR__ . "/classes/{$name}.php";
    if (file_exists($class_file)) {
        require_once $class_file;
    }
 
    // Testen, ob die Datei für eine Funktion existiert
    $func_file = __DIR__ . "/functions/{$name}.php";
    if (file_exists($func_file)) {
        require_once $func_file;
    }
    echo 'drin';
 
}

echo spl_autoload_register('autoload', true);
var_dump(spl_autoload_functions());
mq(null);
//$cookie = new COOKIE();
?>

Und zwar wird autoload registriert Resultat:
1array(1) { [0]=> string(8) "autoload" }

In beiden Fällen!

Aber der Abruf kommt nur bei Klassen zu Stande, nicht bei Funktionen.
drin

Wer hat Rat? KI ist am Ende

Die Ki sagt zwar
Das ist korrekt. spl_autoload_register ist standardmäßig so konfiguriert, dass es nur Klassenaufrufe unterstützt. Um Funktionen zu laden, müssen Sie eine benutzerdefinierte Funktion als Autoloader-Handler registrieren.

Und dies wurde auch so implementiert nur bringts nichts. Und PHP.NET sagt: PHP: spl_autoload_register - Manual
spl_autoload_register — Registriert die angegebene Funktion als __autoload()-Implementierung

Ich habe zum ersten Mal das Gefühl dass mir hier die KI Blödsinn erzählt und es mit Funktionen gar nicht funktioniert?
 
Zuletzt bearbeitet:
Hallo LukaszRT,
der Teil der Beschreibung, die du Zitiert hast, meint nicht das darüber eine nicht deklarierte Funktion definiert wird, sondern das darüber eine Funktioniert definiert werden kann, welche als Autoload Funktion für Klassen verwendet wird.

Somit hat erzählt die KI hier Unsinn.

Du kannst maximal den Methoden Aufruf in einem Try-Catch-Block Kapseln und den Error Abfangen und dann eine Funktion starten, welche die passenden Datei einbindet, ähnlich wie bei der Autoload Funktion bei Klassen.

Alternativ kannst du prüfen mit function_exists prüfen, ob die Funktion definiert ist und falls dies nicht der Fall ist auch selbst eine selbst geschriebene Funktion für das laden aufrufen.

Eine ähnlich Möglichkeit wie bei bei spl_autoload für Funktionen existiert leider nicht.
 
Zurück