Зачем проверять, существует ли функция полосок?
Я нашел следующий код, который проверяет, stripslashes()
функция существует.
if ( function_exists( 'stripslashes' ) ) {
// Do something
} else {
// Do something
}
stripslashes()
Функция работает на PHP4 и PHP5, поэтому мне интересно, зачем ей нужен условный оператор, чтобы проверить, существует ли функция. Я не понимаю
Это не субъективный вопрос. Просто скажите мне, в чем разница между использованием этого утверждения и неиспользованием его. Заранее спасибо!
Вот ссылки по теме, где они были использованы:
2 ответа
Раньше в PHP была функция, известная как магические кавычки, которая, будучи из лучших побуждений, вызывала бесконечную путаницу.
Скорее всего, этот код предназначен для обнаружения магических кавычек, однако это неправильный способ сделать это, тем более что он не работает.
Правильный способ определить, включены ли магические кавычки, - использовать функцию, созданную для этих целей, get_magic_quotes_gpc
вот так.
if (get_magic_quotes_gpc()) {
Или, возможно, следующее, если вы обеспокоены, это будет удалено.
if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
При этом вся функция магических кавычек была удалена еще в PHP 5.4, поэтому, если вам не нужно поддерживать устаревшие версии PHP, вы можете просто забыть о том, что когда-либо существовало (если вы не используете WordPress, который...).
Кстати, я полагаю, что возможно stripslashes
функция может быть удалена в будущем и, возможно, не существовала в какой-то момент, но в этом контексте, вероятно, это не причина.
Sidenote: Переписано из некоторых моих комментариев (слегка измененных), чтобы снабдить вопрос дополнительным ответом на вопрос Александра.
Это, вероятно, чтобы проверить, пошел ли какой-то кодер и создал пользовательскую функцию, называемую так же (метод к чьему-то безумию?), Или кто-то взломал ядро PHP и удалил его; Я, конечно, размышляю, это не невозможно.
Однако то же самое относится и к if ( function_exists( 'mysql_real_escape_string' ) )
,
Если сервер не поддерживает эти старые и устаревшие mysql_
функции, тогда требуется условное утверждение, и оно окажется эффективным / полезным для чего-то такого рода, что будет использоваться.
Ссылки: (mysql_ удалено с PHP 7 и другие уведомления об устаревании)
- https://wiki.php.net/rfc/mysql_deprecation
- https://wiki.php.net/rfc/remove_deprecated_functionality_in_php7
- https://wiki.php.net/rfc
Лично, function_exists()
должен использоваться только против вероятных устаревших функций; mysql_
будучи одним из них и session_register()
- Я уверен, что есть еще.
Он указан в руководстве из добавленных заметок http://php.net/manual/en/function.stripslashes.php и, похоже, имеет отношение к magic_quotes_gpc в соответствии с тем, что Александр (О'Мара) сказал в комментариях.
NB:
Я ни в коем случае не стремлюсь получить что-либо от этого, но для других, посещающих вопрос.