mugyu
1/29/2014 - 4:38 AM

php で未定義のプロパティに値をセットしたりゲットしたり。これで ruby みたいな getter や setter が作れる。けど面倒くさいなぁ

php で未定義のプロパティに値をセットしたりゲットしたり。これで ruby みたいな getter や setter が作れる。けど面倒くさいなぁ

<?
class Hoge
{
	private $message = 'hello, world!';
	function __get($var)
	{
		switch ($var) {
			case 'message':
				print $this->message . PHP_EOL;
				break;
			default:
				$class_name = get_class($this);
				print "Undefined property: $class_name:$var" . PHP_EOL;
		}
	}

	function __set($var, $val)
	{
		switch ($var) {
			case 'message':
				$this->message = $val;
				break;
			default:
				$class_name = get_class($this);
				print "Undefined property: $class_name:$var" . PHP_EOL;
		}
	}
}

$hoge = new Hoge();
$hoge->message;
$hoge->message = 'bood by!';
$hoge->message;
$hoge->non_property;
$hoge->non_property = 'hoge';

#hello, world!
#bood by!
#Undefined property: Hoge:non_property
#Undefined property: Hoge:non_property