2011年12月15日

Yii Framework: CComponentのget/setメソッドの仕組み

CComponent の get/set メソッドなどの仕組みを簡単なコードにしてみました。定義していないプロパティを呼び出した場合、set, get を名前の前につけたメソッドを探して、あればそれを返す、という流れでしょうか。だいたいのクラスが CComponent クラスを経由して実装されているので、要チェッククラスだと思います。

<?php
class A
{
private $test;
public function __get($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter();
}
}
public function __set($name, $value)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
return $this->$setter($value);
}
}
public function __isset($name)
{
$getter = 'get' . $name;
if (method_exists($this, $getter)) {
return $this->$getter() !== null;
}
}
public function __unset($name)
{
$setter = 'set' . $name;
if (method_exists($this, $setter)) {
return $this->$setter(null);
}
}
public function getTest()
{
return $this->test;
}
public function setTest($value)
{
$this->test = $value;
}
}
$a = new A();
var_dump(isset($a->test)); // false
var_dump($a->test); // null
$a->test = 'test';
var_dump(isset($a->test)); // true
var_dump($a->test); // test
unset($a->test);
var_dump(isset($a->test)); // false
var_dump($a->test); // null
view raw A.php hosted with ❤ by GitHub

参考リンク

0 件のコメント:

コメントを投稿