Вы правы, это очень субъективный вопрос, однако я бы, вероятно, использовал сочетание двух ваших вариантов.
У вас есть класс (скажем, Helper), который имеет __call()
(и / или __callStatic()
, если вы используете PHP 5.3+) магические методы , когда не определен [статический] метод называется он загрузит соответствующий вспомогательный файл и выполнит вспомогательную функцию. Имейте в виду, что включение файлов снижает производительность, но я полагаю, что вы получаете выгоду с точки зрения организации файлов, что намного превышает крошечный удар по производительности.
Простой пример:
class helper {
function __callStatic($m, $args) {
if (is_file('./helpers/' . $m . '.php')) {
include_once('./helpers/' . $m . '.php');
return call_user_func_array($m, $args);
}
}
}
helper::isFilePhp(/*...*/); // ./helpers/isFilePhp.php
helper::getCurrentFolder(/*...*/); // ./helpers/getCurrentFolder.php
Вы можете дополнительно оптимизировать этот фрагмент и даже иметь несколько типов помощников (папка, файл) и т. Д., Добавив магический метод __call[Static]()
к каждому из ваших классов и реализовав некоторую логику в структуре папок / файлов вашего вспомогательные файлы / функции.