2010-04-27 3 views
6

У меня есть много функций, которые я создаю или копирую из Интернета.Где хранить вспомогательные функции?

Мне интересно, если я должен хранить их в файле, который я просто включаю в скрипт, или должен хранить каждую функцию как статический метод в классе.

например. У меня есть функция getCurrentFolder() и isFilePhp().

они должны быть сохранены в файле, как они есть, или каждый в классе:

Папка :: getCurrent() File :: isPhp();

как вам это?

я знаю, что это любопытное «как и хотят» вопрос, но это было бы здорово с некоторыми советами/наилучшей практикой

спасибо.

ответ

3

Вы правы, это очень субъективная тема, однако я бы, вероятно, использовал сочетание ваших двух вариантов.

У вас есть класс (скажем, помощник), который имеет __call() (и/или __callStatic(), если вы используете PHP 5.3+) magic methods, когда не определено [статические] Метод называется он будет загрузить соответствующий вспомогательный файл и выполнить вспомогательную функцию. Имейте в виду, что, в том числе, файлы уменьшают производительность, но я считаю, что преимущество, которое вы получаете с точки зрения организации файлов, намного перевешивает крошечный успех.

Простой пример:

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]() к каждому из классов и реализации некоторая логика в структуре папки/файла ваших вспомогательных файлов/функций.