面向对象三大特性:
1.封装
2.继承
3.多态
今天学习了第一个特性封装
封装的目的:让类更加安全,不让外界访问类中的数据
封装的方法:①把类中的成员变量改成private,然后做方法实现变量的取值和赋值,并且可以在方法里加限制条件。(缺点是需要对每一个成员变量添加方法,代码量增大,不是 很方便。)
②使用类里面提供的魔术方法也可以实现变量的取值和赋值。主要用到2个函数:
function __set($任意变量名1,$任意变量名2)
{
}
function __get($任意变量名3)
{
}
__set特点:会自动执行,把赋值语句中的变量名作为第一个参数,把变量值作为第二个参数然后调用__set方法
__get特点:会自动执行,把取值语句中的变量名作为参数然后调用_get方法
例:
class Human
{
private $Name;
private $Age;
private $Sex;
private $Nation;
function __set($name,$value)
{
if($name==Age)
{
if($value>20&&$value<50)
{
$this->$name =$value;
}
}
else
{
$this->$name =$value;
}
}
function __get($name)
{
return $this->$name;
}
}
$eg = new Human();
$eg->Name="李四"; //正常显示
$eg->Age=30; //正常显示
$eg->Age=10; //不符合条件,返回NULL
var_dump($eg);