Возможный дубликат:
функции автозагрузки в php
Я работаю над фреймворком PHP. Интересно, есть ли способ переписать обработчик ошибок, если функция не существует, чтобы автоматически попытаться включить файл, указав функцию в первую очередь.
Пример:
echo general_foo(); // <-- general_foo() is not yet stated. // A handler tries to include_once('functions/general.php') based on the first word of the function name. // If the function still doesn't exist - throw an error.
Победа в этом будет заключаться в том, чтобы пропустить компиляцию ненужных файлов или пропустить отслеживание, а состояние включено здесь и там.
Просто __autoload для функций, а не классов.
Он не существует и, вероятно, никогда не будет. Да, мне тоже хотелось бы … Однако это не мешает вам использовать классы со статическими функциями и позволить автозагрузке PHP.
Я решил это так
Классы классов классов / functions.php:
class functions { public function __call($function, $arguments) { if (!function_exists($function)) { $function_file = 'path/to/functions/' . substr($function, 0, strpos($function, '_')).'.php'; include_once($function_file); } return call_user_func_array($function, $arguments); } }
Функции функционального файла / test.php
function test_foo() { return 'bar'; }
Сценарий myscript.php:
require_once('classes/functions.php'); $functions = new functions(); echo $functions->test_foo(); // Checks if function test_foo() exists, // includes the function file if not included, // and returns bar
В конечном итоге вы можете автоматически загрузить классы / functions.php с помощью __autoload ().
В конце концов, синтаксис для my_function () становится вместо $ functions-> my_function (). И вы можете написать свои собственные обработчики ошибок, если функции не существуют. 😉