Я написал класс базы данных, но не могу получить доступ к методу изнутри:
class database{ . . private $mgc; private $real; public function insert($table,$values,$row = null){ . . for($i = 0; $i < count($values); $i++){ $values[$i] = safe_value ($values[$i]); } . . } public function safe_value( $value ) { if( $this->real ) { if( $this->mgc ) { $value = stripslashes( $value ); } $value = mysql_real_escape_string( $value ); } else { if( !$this->mgc ) { $value = addslashes( $value ); } } return $value; } }
При запуске этого класса у меня есть эта ошибка:
Неустранимая ошибка: вызов неопределенной функции safe_value ()
Когда я использовал mysql_real_escape_string
вместо метода safe_value
класс отлично работает. Почему я не могу получить доступ к функции safe_value
и почему она показывает мне эту ошибку?
При вызове нестатической функции-члена из класса вам нужно ссылаться на него с помощью $this
, в этом конкретном случае вы должны называть его как
$values[$i] = $this->safe_value($values[$i]);
Вам нужно изменить вызов на $values[$i] = $this->safe_value($values[$i]);
для нестатических методов. Для статических методов используйте $values[$i] = database::safe_value($values[$i])
.