六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

PHPイミフ仕様3 __get(), __set()

PHPはクラスに存在しないプロパティをセットすることができる。これだけでもかなりフリーダムすぎる仕様だと思う。
その上、クラスに存在しないプロパティが呼び出されたとき専用のメソッドを定義することができる。それが、__get()と__set()である。

<?php
class Thing
{
  public $a = 0;
}

$buttai = new Thing;
$buttai->b = 1; //問題なし
?>

__get()と__set()は、例えばDBからでっかいデータをゲットする処理なんかは重いから、アクセスされたときはじめてDBアクセスするような場合、なんかに使うのだそうだ。

<?php
class Person
{
  public function __get($property)
  {
    if ($property === 'biography') {
    $biography = "なんだか長い説明文123456789"; // DBからデータをゲットするなど
    return $biography;
  }
}
  public function __set($property, $value)
  {
    if ($property === 'biography') {
    // DBにデータをしまい込むなど
    }
  }
}

?>