Как с помощью метода задать значение переменной в скрипте php? Есть класс:class Comment { public $name = "Name";
public function getName() { return $this->name; }
public function setName($var) { $this->name = sanitize($var); } public function sanitize($str) { $str = trim($str); $str = nl2br($str); return $str; } Если после создания класса задать значение переменной $name напрямую: $comment = new Comment(); $comment->name = "Bla bla bla"; то все ок. Если же пытаюсь использовать метод: $comment->setName('bla bla bla'); ничего не выходит. Я могу, конечно, забить и идти дальше, но честно говоря, хочу понять, почему такое может быть. Можете подсказать? Добавил: Если метод упростить, то все ок:public function setName($var) { $this->name = $var; } Так работает. Не понимаю, почему не работает с функцией sanitize?
Проблема здесь скорее всего заключается в том, что вы пытаетесь вызвать функцию sanitize() внутри метода setName(), но не объявили эту функцию внутри класса. Функция sanitize() должна быть также методом класса Comment, чтобы была доступна изнутри класса. Вот как можно исправить ваш класс:
class Comment { public $name = "Name"; public function getName() { return $this->name; } public function setName($var) { $this->name = $this->sanitize($var); } public function sanitize($str) { $str = trim($str); $str = nl2br($str); return $str; } } $comment = new Comment(); $comment->setName('bla bla bla'); echo $comment->getName();
Теперь при вызове метода setName() значение переменной name будет фильтроваться с помощью метода sanitize().
Проблема здесь скорее всего заключается в том, что вы пытаетесь вызвать функцию sanitize() внутри метода setName(), но не объявили эту функцию внутри класса. Функция sanitize() должна быть также методом класса Comment, чтобы была доступна изнутри класса. Вот как можно исправить ваш класс:
class Comment{
public $name = "Name";
public function getName() {
return $this->name;
}
public function setName($var) {
$this->name = $this->sanitize($var);
}
public function sanitize($str) {
$str = trim($str);
$str = nl2br($str);
return $str;
}
}
$comment = new Comment();
$comment->setName('bla bla bla');
echo $comment->getName();
Теперь при вызове метода setName() значение переменной name будет фильтроваться с помощью метода sanitize().