При работе над проектом PHP, в котором используется парадигма ООП с функцией PHP __autoload()
, что считается лучшим решением для управления автономными функциями:
( Приведенные примеры для краткости упрощены )
tl; dr : Как обычно обрабатывается загрузка автономных функций:
- псевдо-автозагрузка (например, с помощью
__callStatic
magic) [ Option 1 ]
- абстрактный вспомогательный класс сгруппированных статических методов [ Вариант 2 ]
- альтернатива
Также обратите внимание, что я опубликовал соответствующий вопрос, касающийся проблемы параметров / ссылок, с option 1 , который можно найти здесь: __ callStatic (), call_user_func_array (), ссылки и PHP 5.3.1
Задано в index.php
:
function __autoload($class){
require $class . '.class.php';
}
Вариант 1; Абстрактный Core
класс (или Library
, или любой другой), который "автозагрузки" функционирует:
## Core.class.php
abstract class Core{
public static function __callStatic($function, $arguments){
if(!function_exists($function)){
require $function . '.function.php';
}
return call_user_func_array($function, $arguments);
}
}
## SayHello.function.php
function sayHello(){
echo 'Hello';
}
## SayGoodbye.function.php
function sayGoodbye(){
echo 'Goodbye';
}
## index.php
Core::sayHello(); // Hello
Core::sayGoodbye(); // Goodbye
Вариант 2; Группировка связанных функций в абстрактные «вспомогательные» классы, вызываемые статически:
## SayStuff.class.php
abstract class SayStuff{
public static function sayHello(){
echo 'Hello';
}
public static function sayGoodbye(){
echo 'Goodbye';
}
}
## index.php
SayStuff::sayHello(); // Hello
SayStuff::sayGoodbye(); // Goodbye