2010-04-27 12 views
6

tengo muchas funciones que creo o copio de la web.dónde almacenar funciones auxiliares?

me pregunto si debería almacenarlos en un archivo que acabo de incluir en el script o si debo almacenar cada función como un método estático en una clase.

por ejemplo. Tengo una función getCurrentFolder() y una función isFilePhp().

caso de que se almacena en un archivo tal cual o cada uno en una clase:

carpeta :: getCurrent() Archivo :: isPhp();

¿cómo estás?

Sé que esto es un poco a "como quieres" cuestión pero sería muy bien con algunos consejos/mejores prácticas

gracias.

Respuesta

3

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.

Cuestiones relacionadas