仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1646|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:php进修笔记 php中面向对象三大特征之一...

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:36:41 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚开始写页面程序,调试完书中的例子。然后就可以尝试编写留言板了,   复制代码 代码以下:
<?php
/*
* 封装性:面向对象三大特征之一
*
* 1.就是把对象的成员(属性,办法)联合成一个自力的不异单元,并尽量埋没对象的外部细节
* 会见权限润色符 public protected private
* private:公有的,用这个关头字润色的成员,只能在对象外部会见(只要用$this会见)
*
* 属性可以封装:
* 只需一个变量,需求在多个办法利用,就将这个变量声明为成员属性,可以直接在这个对象中的一切办法中利用
*
* 成员属性,相当于这个对象中的全局变量
*
* 成员属性城市在办法中利用,成员属性值的变更其实就是在改动办法的履行行动,也就是改动了对象的功效
*
* 成员属性的值假如不正常,办法履行的功效叶就不正常
*
* 感化:不需求在对象内部改动或读取它的值
* 1.封装
* 再供应一个私有的办法(经由办法对对象成员属性停止赋值和取值就能够掌握)
*
*
* 办法也能够封装
*
* 感化:
* 1.利用private润色使其只能在外部利用
*
* 2.一个类中有100个办法,封装了95个(为别的5个办事的办法),只要5个办法可使用
*
* 100个成员属性,都让取值,不成以改值;或只可改值,不成获得值//此种情形下利用以下办法对照便利
* 和封装有关的魔术办法:
*
* __set();//是直接设置[公有的]成员属性值时,主动挪用的办法
* __get();//是直接获得[公有的]成员属性值时,主动挪用的办法
* __isset();//是直接利用isset()检查对象中公有属性是不是存在时,主动挪用这个办法
* __unset();//是直接利用unset()删除对象中公有属性时,主动挪用的办法
*
*
*
*
*
*
*
*/
class Person{
//x封装成员属性,不需求在对象内部改动
private $name;
private $age;
private $sex;
private __unset($proName){
unset($this->$proName);
}
//是直接检查对象中公有属性是不是存在时,主动挪用这个办法
//__isset($proName)的利用,$proName代表属性名
private function __isset($proName){
return isset($this->$proName);//isset()前往是不是存在
}
function __construct($name,$age,$sex){
$this->name=$name;
$this->age=$age;
$this->sex=$sex;
}
//当获得公有的成员属性时,主动挪用此办法
private function __get($proName)
{
//掌握所获得的值
if($proName=="age"){
if($this-age>40)
return $this->age-10;
}
return $this->$proName;
}
//当设置公有的成员属性时,主动挪用此办法
private function __set($proName,$proValue){
//$proName暗示成员属性名,$proValue暗示成员属性值
//掌握设置局限
if($proName=="age"){
if($proValue > 100 $proValue<0)
return;
}
$this->$proName=$proValue;
}
//供应私有办法来设置成员属性的值
function setAge($age){
//掌握岁数局限,增添平安性
if($age > 100 $age < 0 )
return;
$this->age=$age;
}
//供应私有办法来获得成员属性的值
function getAge(){
//掌握获得岁数的局限
if($this->age < 30)
return $this->age;
else if($this->age<40)
return $this->age-5;
else if($this->age<50)
return $this->age;
else
return $this->age-15;
供应私有办法来 }
function say(){
echo "我的名字:{$this->name},我的岁数:{$this->age},我的姓别:{$this->sex}<br>";
//会见封装过的 run()办法
$this-run();
}
private function run(){
echo '111111111111<br>'
}
function eat(){
}
//析构办法
function __destruct(){
}
}
$p1=new Person("zhangsan",25,"男");
$p2=new Person;
$p3=new Person;
//$p1->age=-50;//由于岁数在内部随便会见,所以成员属性药封装,才有平安性。
$p1->setAge(30);//经由过程办法来设置成员属性德值
$p1->getAge();//经由过程办法来获得成员属性德值
//经由过程添加家魔术办法__set($proName,$proValue) __get($proName),就能够直接挪用成员属性了
$p1->say();//可以挪用
$p1->run();//公有的办法不克不及直接挪用
//删除$p1外面的name
unset($p1->name);
//判别name是不是存在
if(isset($p1->name)){
echo "存在<br>";
}else{
echo "没有这个成员 <br>";
}
?>

作者:代号极光
出处:http://zizhuyuan.cnblogs.com会有很多高手的鼓励,新手的支持,慢慢你劲头就十足,有更多的信心和兴趣去学。
愤怒的大鸟 该用户已被删除
沙发
 楼主| 发表于 2015-2-9 14:15:11 | 显示全部楼层
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-29 03:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表