class Employee
{
var $name;
function __set($propName,$propValue)
{
echo "Nonexistent variable: \$$propName!";
}
}
$employee=new Employee();
$employee->name = "Mario";
$employee->title ="Executive Chef";
__set函数在这个简短的程序中起到什么作用。它影响到哪条语句。
如果没有__set函数会出现什么错误,
还请大师说说__get和__set函数的功能
__get和__set类似于.net中的属性访问器,用于给类中的私有字段赋值。但注意,一般这种方式只能给一个字段赋值,当你的类中有多个字段的时候,建议使用function getProperty(){}和function setProperty(value)的形式(类似于java)。
所以上述代码你使用的方式完全错误:
class Employee
{
$name
public function __get()
{
return $name;//取得私有字段的值
}
public function __set($propValue)
{
this->$name = $propValue;//给私有字段赋值
}
}
__set($name,$val) //这个函数必须有两个参数,将$val赋值给$name。
__get($name) //这个函数有一个参数;
这两个函数都是类中的魔术函数,只能在类中,而且只能给未定义的对象设置属性或读取属性。
这点与java不同。