В книге, из которой я изучаю PHP, говорится, что для того, чтобы люди не могли использовать такие вещи, как кавычки, для изменения запроса, вы должны использовать функцию real_escape_string. Затем автор продолжает, что в некоторых старых системах, где включены магические кавычки, использование real_escape_string может в конечном итоге удваивать экранирование некоторых символов, поэтому он создает эту функцию:
<?php
function mysql_fix_string($conn, $string) {
if (get_magic_quotes_gpc()) $string = stripslashes($string);
return $conn->real_escape_string($string);
}
?>
Было бы хорошо, чтобы превратить это в метод в расширенном классе класса mysqli? (Нет никакой реальной причины, почему я хотел, кроме того, что я хотел передать как можно меньше аргументов.)
Если это так, это правильный способ сделать это?
class mysqli_extended extends mysqli {
public function fix_string($string) {
if(get_magic_quotes_gpc()) {
$string = stripslashes($string);
}
return $this->real_escape_string($string);
}
}
И это ситуация, когда статический метод имеет больше смысла? Если да, то как его можно переписать как статический метод, а если нет, то почему?
Так как я только что задал миллион вопросов, я выложу их резюме здесь:
Магические кавычки устарели с php 5.3 и удалены в 5.4. рекомендую учить PHP правильно
Других решений пока нет …