функции автозагрузки в php?

У меня есть эта проблема, что у меня много огромных функций, и я использую только несколько в данном скрипте. Каждая функция находится в собственном файле. Было бы неплохо иметь возможность «автозагрузить» или, скорее, require_once файл, если данная функция не существует.

Возможно, есть способ переопределить Fatal error: Call to undefined function... в начале скрипта, поэтому каждый раз, когда эта ошибка запускается, скрипт сначала попытается потребовать имя файла с именем несуществующей функции, а затем попробуйте снова вызвать функцию.

Начиная с php 5.3.0, вы можете сделать что-то вроде:

 class Funcs { public function __callStatic($name, $args) { if (!function_exists($name)) { require_once sprintf( 'funcs/%s.func.php', // generate the correct path here $name ); } if (function_exists($name)) { return call_user_func_array($name, $args); } else { // throw some error } } } 

И затем используйте его как (например):

 Funcs::helloworld(); 

Который попытался бы загрузить файл в funcs/helloworld.func.php и выполнить helloworld после успешной загрузки.

Таким образом, вы можете опустить повторные встроенные тесты.

function_exists

и код может быть таким

 if ( !function_exists('SOME_FUNCTION')) { include(.....) } 

Если вы используете скрипты без ООП, вы можете использовать функцию функции:

 if(!function_exists('YOUR_FUNCTION_NAME')){ //include the file require_once('function.header.file.php'); } 

// Теперь позвоните в cuntion

// Ссылка: http://php.net/manual/en/function.function-exists.php

если вы используете классы, например. ООП. чем вы можете использовать метод __autoload :

 function __autoload($YOUR_CUSTOM_CLASS){ include $YOUR_CUSTOM_CLASS.'class.php'; } 

// Теперь вы можете использовать классы, которые НЕ были включены в текущий файл.

// Ссылка: http://php.net/manual/en/language.oop5.autoload.php

function_exists будут делать лучше

Я думаю, вы могли бы попытаться написать некоторую обработку ошибок, которая включает функции function_exists, но проблема заключается в том, когда правильно загрузить функцию?

Рассматривали ли вы возможность интегрировать свои функции в классы, чтобы вы могли использовать http://uk.php.net/autoload ?

Неопределенные ошибки функции являются фатальными ошибками для PHP. Таким образом, нет способа справиться с фатальными ошибками (кроме таких хаков, как register_shutdown_function ). Лучше думать о способе ООП и использовать классы с __autoload .

function_exists не поможет вам поймать несуществующие функции «на лету». Вместо этого вам придется окружать все вызовы функций if (! Function_exists ()). Насколько я знаю, вы можете захватывать не существующие вызовы «на лету» с помощью классов, используя реализации _autoload . Может быть, было бы целесообразно поместить ваш код в классы или поместить связанный набор функций в один файл и, таким образом, сохранить ряд проверок для функций-функций?