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にデータをしまい込むなど
}
}
}
?>

コメントを残す

メールアドレスが公開されることはありません。