PHP中在类的内部访问类外部的对象($this)

  • 类成员属性和方法的访问必须通过对象才能访问,类外部可以通过实例化得到类对象从而实现成员访问,但是类内部不能访问类外部的对象,此时类的内部就内置了一个对象$this代表来访问对象
<?php
	class Saler{
		public $count = 100;
		protected $discount = 0.8;
		private $money = 100;
		public function getAll(){
			echo $count,$discount,$money;   #全部错误,提示未定义的变量
		}
	}
	#实例化
	$temp = new Saler();
	#调用函数
	$temp->getAll();
  • 以上的代码是错误的
<?php
class Saler{
	public $count = 100;
	protected $discount - 0.8;
	private $money = 100;
	public function getAll(){
		#内部访问
		global $s;
		echo $s->count,$s->discount,$s->money;   #可以正确输出
	}
}

#实例化
$temp = new Saler();
#调用类里面的方法
$s->getAll();
#对比
#再次实例化一个对象
$temp1 = new Saler();
$temp1->count = 888;
$temp1->getAll();     #注意:此时修改了属性的值之后,上面类的里面并不会输出出来修改后的值,这个时候就需要用到$this.
  • 如下:
<?php
class Saler{
	#属性
	public $count = 33;
	protected $diccount = 927;
	private $money = 888;

	public function getAll(){
		var_dump($this);
		echo $this->count,$this->discount,$this->money;
	}
}

$temp = new Saler();
$temp->getAll();   #var_dump($this)打印出来的count是33

$temp1 = new Saler();
$temp1->count = 88888;   #echo输出出来的count的值是88888
$temp1->getAll();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值