Патриот
Новичок
Здравствуйте, уважаемые люди!
Как всем известно в PHP нельзя настроить автозагрузку/автоподключение (autoload) функций. Только классов.
В связи с этим мне очень НЕ хочется:
1. Подключать функции через классы (примеры: http://stackoverflow.com/questions/4737199/autoloader-for-functions).
2. Объявлять все функции в одном файле и подключать его.
Меня устраивает вызов require в начале каждого файла, где используется подгружаемая функция. Но тут есть загвоздка. Если файл с функцией загружается повторно то PHP падает с ошибкой "Cannot redeclare function". В связи с этим есть несколько путей решения:
1. Использовать require_once. Не годится т.к. медленно (http://stackoverflow.com/questions/186338/why-is-require-once-so-bad-to-use).
2. Использовать function_exists:
Этот способ проигрывает в производительности следующему.
3. Испльзовать константы:
Кто-нибудь знает ещё способы? Последний вариант получился громоздким. Вот если бы в PHP можно было написать как-нибудь так:
тогда я бы остановился на этом варианте...
Как всем известно в PHP нельзя настроить автозагрузку/автоподключение (autoload) функций. Только классов.
В связи с этим мне очень НЕ хочется:
1. Подключать функции через классы (примеры: http://stackoverflow.com/questions/4737199/autoloader-for-functions).
2. Объявлять все функции в одном файле и подключать его.
Меня устраивает вызов require в начале каждого файла, где используется подгружаемая функция. Но тут есть загвоздка. Если файл с функцией загружается повторно то PHP падает с ошибкой "Cannot redeclare function". В связи с этим есть несколько путей решения:
1. Использовать require_once. Не годится т.к. медленно (http://stackoverflow.com/questions/186338/why-is-require-once-so-bad-to-use).
2. Использовать function_exists:
Код:
if(!function_exists('my_func')){
function my_func() {
// ...
}
}
3. Испльзовать константы:
Код:
if(!defined('my_func')){
function my_func() {
// ...
}
definde('my_func', 1);
}
Код:
if(!defined('my_func')){
definde('my_func', 1);
continue;
}
function my_func() {
// ...
}