<?
class PropertyObject{
private $_properties = array(
'name' => null,
'dateofbirth' => null
);
function __get($propertyName){
if(!array_key_exists($propertyName, $this -> _properties)){
throw new Exception('Недопустимое значение свойства');
}
if(method_exists($this, 'get' . $propertyName)){
return call_user_func(array($this, 'get' . $propertyName));
}else{
return $this -> _properties[$propertyName];
}
}
function __set($propertyName, $value){
if(!array_key_exists($propertyName, $this -> _properties)){
throw new Exception('Недопустимое значение свойства');
}
if(method_exists($this, 'set' . $propertyName)){
return call_user_func(array($this, 'set' . $propertyName), $value);
}else{
$this -> _properties[$propertyName] = $value;
}
}
function setDateOfBirth($dob){
if(strtotime($dob) == -1){
throw new Exception('Недопустимое значение даты рождения');
}
$this -> _properties['dateofbirth'] = $dob;
}
function sayHello(){
print "Привет! Меня зовут {$this -> name}. Я родился {$this -> dateofbirth}";
}
}
?>
<?
$obj = new PropertyObject();
$obj -> name = 'Лёха';
$obj -> dateofbirth = '05.10.1987';
$obj -> sayHello();
?>
Не понятно, что за функции __set и __get. С виду пользовательские, а работают как встроенные.
Объясните пожалуйста как они работают?
Спустя 2 минуты, 30 секунд (7.04.2010 - 22:30) twin написал(а):
Как раз только написал

Спустя 13 часов, 50 минут, 47 секунд (8.04.2010 - 12:20) Панч написал(а):
Спасибо за ссылку, сразу все прояснилось и лишние вопросы отпали =)
Спустя 28 дней, 28 минут, 47 секунд (6.05.2010 - 12:49) b00tanik написал(а):
А что у этих методов с быстродействием? Интересовался кто?
Спустя 12 минут, 58 секунд (6.05.2010 - 13:02) twin написал(а):
Хреново. У магических методов, да и вообще у ООПшных фишек в PHP (таких как исключения и иже с ними) вообще с быстродействием напряг.
Приходится платить за крутизну.
Правда не мне)))
Приходится платить за крутизну.
Правда не мне)))