Tienes razón, esta es una cuestión muy subjetiva, sin embargo, probablemente usaría una combinación de tus dos opciones.
tiene una clase (digamos ayudante) que tiene el __call()
(y/o __callStatic()
si está usando PHP 5.3+) magic methods, cuando un no define el método [estática] se llama que va a cargar el archivo de ayuda respectiva y ejecuta la función auxiliar. Tenga en cuenta que incluir archivos reduce el rendimiento, pero creo que el beneficio que obtiene en términos de organización de archivos supera con creces el pequeño golpe de rendimiento.
Un ejemplo sencillo:
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
Puede optimizar aún más este fragmento e incluso tienen varios tipos de ayudantes (carpeta, archivo) y así sucesivamente, añadiendo un método mágico __call[Static]()
a cada una de sus clases e implementar alguna lógica en la estructura de carpetas/archivos de sus archivos/funciones de ayuda.