Как вы думаете, я должен хранить все свои функции PHP в одном файле? - PullRequest
4 голосов
/ 18 сентября 2010

Мне было интересно, как вы думаете, я должен хранить все свои функции в одном файле или разделять их в разных файлах !!

p.s, если я соберу все функции в одном файле, будет ли php легче обрабатывать такие вещи !!

Ответы [ 4 ]

14 голосов
/ 18 сентября 2010

Это зависит от того, сколько у них функций, как долго они работают и что они делают.Для любого значительного проекта помещать все в один файл - это вообще плохая идея.Они должны быть классифицированы по тому, что они делают.

Наличие вещей в отдельных файлах важно не только для организации и удобочитаемости, но также помогает при контроле исходного кода видеть, что определенный файл изменился, но все остальныеостался прежним.

5 голосов
/ 19 сентября 2010

По моему опыту, чем меньше файлов вы включаете, тем быстрее работает PHP-скрипт.Если разделение функций на несколько файлов означает, что вам нужно использовать include или требуют несколько раз, вероятно, лучше хранить функции в одном файле.

2 голосов
/ 18 сентября 2010

Это преждевременная попытка оптимизации.Время обработки фактического содержимого файла перевесит время, сэкономленное при открытии и закрытии файлов.Таким образом, вы экономите, возможно, 0,01% времени, разбивая файлы.

1 голос
/ 18 сентября 2010

Для очень большого проекта потеря в скорости будет компенсирована выигрышем в модульности и, если все сделано правильно, масштабируемостью.Эта функция очень проста, очень мала и может использоваться для включения любого php и последующего его выполнения, без необходимости использования длинного if () else или переключения регистра.Теперь это может быть более интенсивным, чем оператор регистра переключателя, но для большого проекта эта функция идеально подходит.

function trnFeature_getFeature($feature = 'default', $options = array()) {

    $path = __DIR__ . "/features/{$feature}/{$feature}";

    //Check the path, if no file exists bail out
    if(!file_exists($path . '.inc')) {
      return false;
    }

    //The path checked out, include the file
    include_once $path . '.inc';

    //setup the function that will execute the feature
    $feature_fn = "trnFeature_" . $feature . "_featureInit";

    //execute the function, passing it the $options array with all available options
    if(function_exists($feature_fn)) {
      $output = $feature_fn($options);
    } else {
      //you haven't created the correct function yet, so bail out
      return false;
    }

    return $output;
}
...