1、__set()和__get()
在访问和修改php类中的私有成员时可以这两个方法,详细可看下面对代码:
class Account{
private $usr = 1;
private $pwd = 2;
public function __set($name,$value){
echo "Setting $name to $value \r\n";
$this->$name = $value;
}
public function __get($name){
if(!isset($this->$name)){
echo "未设置";
$this->$name="正在为你设置默认值";
}
return $this->$name;
}
}
$a = new Account();
echo $a->user;
$a->name = 5;
echo $a->name;
echo $a->big;
2、__call()和__callStatic()方法
当访问一个不可访问(未定义,不可见)的方法时,__call()会被调用,第一个参数是调用的方法,第二个是传入对参数数组。__callStatic对应于静态方法。
详细可以看下面的代码:
public function __call($name,$arguments){
switch (count($arguments)) {
case '2':
echo $arguments[0]*$arguments[1],PHP_EOL;
break;
case '3':
echo array_sum($arguments),PHP_EOL;
break;
default:
echo 'wrong arguments',PHP_EOL;
break;
}
}
3、__toString方法
当使用echo输出一个对象时,会自动调用这个函数,如果类中没有定义这个函数,则使用echo输出对象时会报错。这个方法必须返回一个string。
class Account{
public $usr = 1;
private 4pwd = 2;
public function __toString(){
return "{$this->user},{$this->pwd}";
}
}
$a = new Account();
echo $a,PHP_EOL;
print_r($a);