Что такое геттер и сеттер?
Что такое геттеры и сеттеры в PHP5?
Может кто-нибудь дать мне хороший пример с объяснением?
4 ответа
Это концепция для сокрытия данных (или инкапсуляции) в ООП. Например, если вы хотите иметь определенное свойство в своем классе, скажем, "Сумма" и дать клиенту вашего класса возможность изменить или извлечь его значение, вы должны сделать вашу переменную "Сумма" частной (невидимой для тех, кто использует ваш класс) и сгенерировать два метода - геттер и сеттер, которые манипулируют вашим значением (которые являются общедоступными).
Причина в том, чтобы иметь возможность проверять данные или манипулировать ими перед установкой или получением вашего значения. Вот краткий пример:
class test {
private $count; //those who use your class are not able to see this property, only the methods above
public function setCount( $value )
{
//make some validation or manipulation on data here, if needed
$this->count = $value;
}
public function getCount()
{
return $this->count;
}
}
Атрибуты классов могут быть приватными. Это означает, что только объект может читать и записывать свои собственные личные атрибуты. Поэтому вам нужны методы, чтобы сделать это. Методы, которые читают и возвращают значение атрибута, называются получателями, а те, которые пишут атрибуты, называются установщиками. С помощью этих методов классы могут контролировать то, что выходит и что входит. Эта концепция называется инкапсуляцией.
Методы получения и установки - это совершенно новая концепция в PHP 5 в виде двух магических функций __get() и set(). Эти две функции устанавливают или получают значение свойства объекта резко, как объяснено в следующем примере.
class Datatype{
private $thing;
public function _set($k,$v){
$this->$k = $v;
}
public function __get($k){
return $this->$k;
}
}
Руководство по PHP на самом деле не очень многословно в этом вопросе, но есть очень подробный пример, который должен многое объяснить. Магические методы: перегрузка свойств