PHP5のゲッターとセッターとは何ですか?
誰かが説明付きの良い例を教えてくれますか?
これは、OOP でのデータ隠蔽 (またはカプセル化) の概念です。たとえば、クラスに特定のプロパティを持ちたい場合は、「Amount」と言って、クラスのクライアントにその値を変更または抽出するオプションを与えます変数「Amount」を非公開にする必要があります (あなたのクラス) を作成し、値を操作するゲッターとセッターの 2 つのメソッド (パブリック) を生成します。
その理由は、値を設定または取得する前に、データを検証または操作できるようにするためです。以下に簡単な例を示します。
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;
}
}
クラスの属性はプライベートにすることができます。つまり、オブジェクトのみが独自のプライベート属性を読み書きできるということです。したがって、それを行うためのメソッドが必要です。属性値を読み取って返すメソッドは getter と呼ばれ、属性を書き込むメソッドは setter と呼ばれます。これらのメソッドを使用して、クラスは何を発信し、何を着信するかを制御できます。この概念はカプセル化と呼ばれます。
Getter と Setter は、PHP 5 のまったく新しい概念であり、__get() と set() という 2 つの魔法の関数の形をとっています。これら 2 つの関数は、次の例で説明するように、オブジェクトのプロパティ値を劇的に設定または取得します。
class Datatype{
private $thing;
public function _set($k,$v){
$this->$k = $v;
}
public function __get($k){
return $this->$k;
}
}
PHP のマニュアルは、この問題についてあまり詳細ではありませんが、多くのことを説明する非常に詳細な例があります。マジック メソッド: プロパティのオーバーロード