Beim Aufrufen einer nicht definierten Funktion wird ein nicht definierter Fehler ausgelöst, der die Ausführung anhält, wenn dies geschieht. Selbst wenn Sie den Fehler abfangen könnten, könnten Sie die Funktionsausgabe nicht an die ursprüngliche Variable zurückgeben.
Meine Empfehlung, umfassen alle Funktionen am Anfang der Seite:
foreach (glob("Function/*.php") as $filename)
{
include $filename;
}
Andernfalls würden Sie so etwas zu tun haben, manuell für jeden Anruf:
try {
$ret = example_function();
} catch (Exception $e) {
include('Function/example_function.php');
$ret = example_function();
}
konnte Sie Erstellen Sie jedoch eine benutzerdefinierte Funktion, die das tun würde:
function myFunction()
{
$args = func_get_args();
$func_name = array_shift($args);
if (!function_exists($func_name)) {
include('Function/' . $func_name . '.php');
}
return call_user_func_array($func_name, $args);
}
Sie müssten dann Rufen Sie Ihre Funktionen mit myFunction('testFunction', $param1, $param2)
.
Wenn Sie Klassen laden, wird dies einfacher. Sie können PHP autoloading verwenden, um diese Aufgabe zu erfüllen:
Viele Entwickler, die objektorientierte Anwendungen schreiben, erstellen eine PHP-Quelldatei pro Klassendefinition. Einer der größten Ärgernisse ist das Schreiben einer langen Liste von benötigten Includes zu Beginn jedes Skripts (eines für jede Klasse).
In PHP 5 ist dies nicht mehr notwendig. Die Funktion spl_autoload_register() registriert eine beliebige Anzahl von Autoloadern, wodurch Klassen und Schnittstellen automatisch geladen werden können, wenn sie derzeit nicht definiert sind. Durch das Registrieren von Autoloadern erhält PHP eine letzte Chance, die Klasse oder die Schnittstelle zu laden, bevor sie mit einem Fehler fehlschlägt.
was Sie Fehler gesehen? Wenn es eine gültige Datei namens '$ functionName' im' Function'-Verzeichnis gibt, dann sollten Sie kein Problem haben. – Umair
Es gibt keine Möglichkeit, eine include.php zu erstellen, die alle erforderlichen Includes enthält Ruf das an. Die Funktion wird nicht automatisch eingeschlossen, wenn $ functionName über der Include-Zeile deklariert ist. – Danimal
* "wenn eine Funktion aufgerufen wird" * - 'function myfunction() {include here}' und die Funktion aufrufen - wenn es sich um die Frage handelt. TBH, es fällt mir schwer, mich mit Ihrer Frage zu beschäftigen. –