类的封装和应用--(封装是把行为和属性隐藏起来,从而保护程序安全)
/*
public /表示全局/,类内部外部子类都可以访问;
protected /表示受保护的/,只有本类或子类或父类中可以访问;
private /表示私有的/ ,只有本类内部可以使用;
*/
/*
private
(1)如果,对象类属性变量,被私有化,要输出的话可以通过 可以用,其他没有私有化的 对象类方法(自定义函数)--来访问对象类属性,在未被私有化类对象类方法中可以用来$this->变量名来访问 最后输出这个对象方法,
(2)如果,对象类方法被,私有化。要输出的话,可以通过,在其他未私有化类方法中,来$this->方法()来访问并把 没私有化类方法输出
(3)如果,类被私有化,同样的道理,可以跨类访问,其他类的属性,用上面的方法。
*/
/* 某些特定操作的时候需要访问和赋值封装的类型,这个时候我们就需要其他的
函数帮我们完成这些操作,PHP为我们提供了个方法名:__set() , __get()
__set() 取得当前类中封装过私有属性或者方法重新执行或赋值操作(把封装的属性和方法,变成公共全局属性和方法 并赋值)
__set($name,$va) 读取 属性名 和属性值 并对其进行修改
__get() 取得当前类中封装过属性或方法并转换成共有属性 (把封装的属性和方法,变成公共全局属性和方法)
*/
//=============例子==============================
//-----------------------------------------------------------------------------------------------------------------------------
//创建类
class MMpc {
//创建私有化 类属性变量
private $MMname ; //私有化类属性变量 (只能在本类中使用)
//初始化函数
function __construct($MMname=""){ //接收对象传来的参数
return $this->MMname=$MMname; //定义$this->MMname =初始化 我的电脑
}
//创建类方法,函数 (用此非私有化函数取出私有话属性变量,并输出)
function MMgsm(){ //创建类方法--自定义函数MMgsm()
return $this->MMname."已经打开电源,正在开机中........"; //返回内容
教程编写明仔QQ279999471 更多教程WWW.PHP100.COM 本文字教程思路来自于PHP100视频教程,让看视频教程慢的人 快速看文字学习!
}
//私有化类方法---------------------
//建立私有化 类方法(自定义函数)
private function MMsiyou(){ //创建(私有化)的类方法--自定义函数MMsiyou()
return $this->MMname."已经打开电源,正在开机中........"; //返回内容
}
//建立非私有化--类方法来取上面的 私有化类方法
function MMfeisiyou(){ //创建(非私有化)的类方法--自定义函数MMfeisiyou()
return $this->MMsiyou(); //返回内容
}
//用__get可以访问私有化类属性变量--(并可以处理加点其他东西,但不许直接修改变量值)
function __get($MMname){ //创建__GET类方法定义--类属性变量$MMname的植
return $this->MMname."-加点东西"; //返回内容
}
//用__set可以访问私有化类属性变量--(并可以做判断,修改变量值)
function __set($n,$zhi){ //通过这个才获取有效 $pcdn1->MMname="修改过的-" //创建__set类方法定义--可以修改类属性变量$MMname的植(有2个参数 接受 $pcdn1->$MMname=值)
return $this->$n=$zhi; //返回内容
}
//也可以加判断
/* if($zhi=="修改过的-"){ //如果等于 则返回内容
$this->$n=$zhi; //返回内容
}
} */
}
//实例化对象
$pcdn1 = new MMpc("MM的电脑"); //把类进行对象实例化
//输出对象内容
echo "用类方法取出私有化类(属性)变量:".$pcdn1->MMgsm()."<br>"; //由于对象类(属性)变量私有话,所以通过访问 未私有化的函数来输出
echo "用类方法取出私有化类(方法)函数:".$pcdn1->MMfeisiyou()."<br>"; //由于对象类(方法)函数私有话,所以通过访问 未私有化的函数来输出
echo "用类__get方法取出私有化类(属性)变量:".$pcdn1->MMname."<br>";
//由于对象类(属性)变量私有话,所以通过访问 _get方法取出私有化类(属性)变量 (不能修改)
$pcdn1->MMname="修改过的-"; //发送修改的内容,到可修改__get中 在返回内容
echo "用类__set方法取出私有化类(属性)变量(并可以修改):".$pcdn1->MMname."<br>"."<br>";
//由于对象类(属性)变量私有话,所以通过访问 __set方法取出私有化类(属性)变量 (能修改)
上一篇:php类的继承和应用
下一篇:php对象中的$this关键字