<?php class Computer {

private $_name;
private $_model;
private $_cpu;

private function __set($_key,$_value) {
$this->$_key = $_value;
} private function __get($_key) {
return $this->$_key;
}

}


$computer = new Computer();
$computer->_name = '联想';
$computer->_cpu = '四核';
$computer->_model = 'i7';

echo $computer->_name;
echo $computer->_cpu;
echo $computer->_model;
我想问的事如果使用了_set和_get方法,那么类的私有属性就可以在外面任意使用赋值修改,那么和把属性设置为Public有何区别了,感觉上这两个方法没有什么用了。

解决方案 »

  1.   

    有用的,例如你想效仿java不想让外面给这个类对象任意赋值(没有的属性)或者任意删除属性的话,你可以把这两个方法明文写进去但却不作任何操作即可
      

  2.   

    __get 和 __set 方法是为实现其他高级语言的 Access 和 Assign 方法而设置的提供下列优点∶ 
    为将接口和实现分开的类或对象创建一个公共接口。
    可轻松对属性的有效性进行确认。
      

  3.   

    既然你认为那两个方法没用。你不妨注释掉试试。肯定报 Cannot access private property Computer::$_name 错。而 __set和 __get 就实现了这个.
      

  4.   

    set不是你那样用的,你去看哈其他开源框架就清楚了,特别是些开源框架的数据库Active Record类