0426面向对象

//面向过程
//类和对象 任何东西都可以称为对象 类实例化出来的东西 是一条具体的信息
// 类 对所有同类的对象抽象出来的东西

//定义类
class Ren
{
var $name;//称为成员变量
var $age;
var $height;
var $sex; //一边不要给成员变量赋值

function __construct($s)//构造函数
{
$this->sex=$s;
}

function run() //成员函数(方法)
{
echo "这个人正在跑";
}
function say()
{
echo $this->name."正在说话";
}
function __destruct() //析构函数 对象销毁前调用
{
echo"该对象以销毁";
}
function setage($a)//给age赋值的函数
{
if($a>10&&$a<50)
{
$this->age=$a;
}
}
function getage()//取age的值
{
return $this->age;
}
function __set($name,$value)//对类里面的私有成员进行赋值的魔术方法 ***
{
$this->$name=$value;
}
function __get($name)//对类里面的私有成员进行取值的魔术方法 ***
{
return $this->$name;
}
}

//使用类
//1 实例化对象
$r=new Ren("男");
///2 给成员变量赋值(调用成员变量)
$r->name='张三'; //给对象name赋值
$r->setage(30);
$r->name="李四";//执行该语句会自动调用__set方法 $r->__set("name","李四")
var_dump($r);
//3 成员方法
$r->say();//执行成员方法
//访问修饰符 public
//1 如果要加访问修饰符需要去掉var
//2 访问修饰符有三种 public 公有的 protected 受保护的 privatc私有的 (只能在这个类里使用)
//3 如果不加访问修饰符默认是公有的(public)

// $this引用 它代表该对象(哪个对象调用就代表它),

//构造函数
//1 写法特殊 __construct

//2 执行特殊 在造对象的时候最先执行
//作用:对对象执行初始化操作

//面向对象的三大特性
// 封装
//目的:让类更加安全 不让外界直接访问类里面的成员变量
//做法:1 把成员变量做成私有的(privatc)
//2 做一个方法来实现变量的取值或者是赋值 在方法里加限制条件

//使用类里面的魔术方法也可以实现对私有成员的操作

//__set() 的特点:会自动执行,把赋值语句中的变量名作为第一个参数,把变量名作为第二个参数调用__set()方法

//__get() 的特点: 会自动执行 把赋值语句中的变量名作为参数调用__get()方法

原文地址:https://www.cnblogs.com/wcc731546227/p/5435150.html