__set(),__get() 魔术方法示例

<?php

class Ren
{
private $name;
private $age;
private $sex;
function __set($name,$value)
{
if($name == "age")
{
if($value < 50 && $value > 10)
{
$this->$name = $value;
}
}
else
{
$this->$name = $value;
}
}
function __get($name)
{
return $this->$name;
}

function __destruct()
{
echo "结束啦。对象销毁";
}

}

$r = new Ren();
$r->name = "张三";
$r->age = 30;
$r->sex="女";
var_dump($r);
echo $r->age;

//面向对象的三大特性
//1.封装
//1)目的:让类更加安全,不让外界直接访问类里面的成员变量
//2)做一个方法来实现变量取值或赋值,在方法里加限制条件
//使用类里面的魔术方法实现对私有成员的操作
//__set()特性:自动执行,把赋值语句中的变量作为第一个参数,把赋值语句中的变量值作为第二个参数,调用__set()方法
//__get()特性:自动执行,把取值语句中的变量作为参数调用__get方法

//小结:对private类私有成员的操作,只需假如__set(),__get()函数即可。


//2.继承
//3.多态


?>

原文地址:https://www.cnblogs.com/wanlibingfeng/p/5440368.html