Что такое геттер и сеттер?

Что такое геттеры и сеттеры в 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 на самом деле не очень многословно в этом вопросе, но есть очень подробный пример, который должен многое объяснить. Магические методы: перегрузка свойств

Другие вопросы по тегам