Я читал о том, как определить кодировку файла в PHP, и на каком-то блоге или где-то, что было предложено сделать это:Определить две функции или разветвить внутри одного?
if (function_exists('mb_detect_encoding')) {
function is_utf8($str) {
// do stuff using the mb* libraries
}
} else {
function is_utf8($str) {
// do stuff manually
}
}
Для меня это выглядит очень неаккуратно, и может быть заменен это:
function is_utf8($str) {
if (...) {
// mb stuff here
} else {
// manual stuff here
}
}
Однако, я также вижу, что он также имеет некоторые преимущества. В зависимости от того, насколько сложным является оператор if
, и как часто вызывается функция, это может быть намного более эффективным. Мой вопрос таков: в какой момент вы могли бы рассмотреть разделение функции на две, как в первом примере? Есть ли какие-либо другие плюсы/минусы, которые я пропустил?
Редактировать: Пожалуйста, не зацикливайтесь на примере здесь, вопрос об этой практике в целом.
См. Мои контрольные показатели ниже. Вызов функции_exists() довольно ничтожен, но что-то об этом или структуре управления делает функцию вызова функции function_exists() занимает заметную сумму больше времени. –
Внутренне PHP, вероятно, выполняет поиск типа 'function_exists()' для проверки перед вызовом функции * any *. При втором методе PHP должен выполнить два поиска - один для 'blarg()' и другой для 'sin()', который может учитывать дополнительное время. – leepowers