@billybons2006

Как с помощью метода задать значение переменной в скрипте 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?
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 3
w999d
@w999d
Web-developer
$this->sanitize();
метод же классу принадлежит, а не отдельно валяется
Ответ написан
mr_T
@mr_T
Web-разработчик
Вообще лучше сделать это через __set, __get, чтобы не было некрасивых записей типа $obj -> set/getName, а просто обращаться к name так, как будто это поле объекта. Ну а sanitize нужно вызывать как static::sanitize. Только добавь к методу sanitize static. А, ну и обязательно нужно сделать PRIVATE $name, а то смысл инкапсулирования теряется.
Ответ написан
Комментировать
@billybons2006 Автор вопроса
Спасибо большое! private, ясное дело, уберу. Я его в public поставил, потому что уже три часа пытаюсь понять, что за!!!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы