<?php
class test
{
public $name1 = "1";
protected $name2 = "2";
private $name3 = "3";
//使用_get _set,避免直接对类属性的访问
public function __get($name) //_get方法 必须含有一个参数
{ //当对象调用一个非公有属性(或不存在的属性时)触发__get方法,并且把这个属性名当作参数传入到方法中
echo "调用的属性名为".$name;
}
public function __set($name, $value) //_set(属性名,属性值) 必须含有两个参数
{ //当对象调用一个非公有属性时,__set方法会把这个属性名当作第一个参数,把值当作第二个参数传进来
echo "调用的属性名和值为 ".$name." ";
}
}
$qjy = new test(); //实例化test类
echo $qjy->name1."<br/>";
echo $qjy -> name2."<br/>"; //调用非共有属性时,__get方法将返回此属性的属性名
echo $qjy -> name3."<br/>";
echo $qjy -> wo."<br/>";
/* 运行结果:
1
调用的属性名为name2
调用的属性名为name3
调用的属性名为wo
*/
echo $qjy->name2 = "qwe<br/>"; //调用非共有属性时,__set方法将返回此属性的属性名和值
echo $qjy->name3 = "asd<br/>";
echo $qjy->aaa = "zxc<br/>";
/* 运行结果:
调用的属性名和值为 name2 qwe
调用的属性名和值为 name3 asd
调用的属性名和值为 aaa zxc
*/