2:this的绑定&封装的概念

学习要以最快的速度学习,因为有些事情,容不得你等,你也等不起,你学的速度越快,你才能面对的更多!

this的绑定

  • 当一个对象被实例化出来之后,调用这个实例对象的方法,在执行函数之前会进行一个操作,就是绑定this,将this绑定到调用此方法的对象上;

  • this就代表了当前对象;

  • 示例:

class Ren{
	public $name = '小明';
	public function sayName(){
		echo $this->name;
	}
}
// 创建实例
$a = new Ren();
$a -> name;//小明
$a -> sayName();//小明

//此时,sayName函数中的$this,可以理解成:$a -> name;
//this只有在运行时候才能确定,到底是指代了谁;
  • 在方法中,想访问调用者的属性,则必须使用$this;
  • 如果不用$this,则认为这个属性是函数内的句不变量,如果方法内存在这个变量,则拿来用,如果不存在,则报错undefined;

封装的概念

  • 封装的概念
  • 权限修饰符
  • 封装MySQL类
  • 重载

面向对象三大特征
封装 继承 多态

封装的概念

示例1:

class Ren{
	private $money = 1000;

	public function subMoney($num){
		$this->money += $num;
	}
	public function getMoney(){
		return $this -> money;
	}
}

echo $zhangsan -> money;//报错

$zhangsan = new Ren();

$zhangsan -> subMoney(20);

$a = $zhangsan -> getMoney();

echo $a;//1020

  • 因为这个实例对象的$monry属性的修饰符是privare,这个单词的中文意思有私人的,私有的意思,所以,当一个变量的修饰符被定义为私有时,则在只能在当前类中进行访问,外界是无法访问到这个变量的;

  • 与private相反的,public这个修饰符,中文意思有公共的、公有的,那么除了在类中可以访问修改以外,在类的外部,也是可以随意修改的;

  • 上面的例子就很简略的体现了面向对象的含义,例如,在人这个类上都有钱这个属性,但是,钱是每个类的实例的,其他人不能随意修改,所以,根据实际情况合理的使用【权限修饰符】能让开发质量更高;私有变量提供修改的方法,而不能让外界直接修改,这就是控制属性的可读可写性;一些重要的属性进行私有化,也可以说是封装了起来,然后再提供修改的方法,别人更愿意叫它api;

示例2:

class Ren{
	private $money = 1000;
	public function send($much){
		if($much <= 100){
			$this->money -= $much;
			echo "借出 $much 元,剩余: $this->money 元";
		}else{
			echo '太多了,不借!';
		}
	}
}
$a = new Ren();
$a -> send(200);
  • 封装非常简单,就一句话:一切能封装起来的都应该封装起来,而类似权限修饰符,this,构造函数,析构函数,这些东西都是服务于面向对象的;
  • 封装最终的目的其实就是复用,是最直观的体现,也是封装这个概念,本来就想要达到的目的;
  • 就像汽车,兰博基牛,这辆车就是一个封装的对象,人开车,人需要管这个车是怎么把汽油转化成动力的吗?不需要,你只要上车,点火,踩离合踩刹车,挂挡,松刹车,踩油门,车这个对象就开始工作了,你只需要按照它的流程去操作,就行了;
  • 多态是比较宽泛的,比如两栖步兵战车,这辆车的发动机就一个,但是驱动不一样,导致它可以在水里行进,也可以在陆地上行进,这就很灵活;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值