Для очень большого проекта потеря в скорости будет компенсирована выигрышем в модульности и, если все сделано правильно, масштабируемостью.Эта функция очень проста, очень мала и может использоваться для включения любого 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;
}