PHP中的创建类的对象深入理解

PHP中对象的创建为:new 类名;

Class A{
	public $p1=1;
}
$o1=new A();
var_dump($o1);

结果为:

可以看出变量$o1是一个A类的对象类型。“#1”是一个系统内部自定义的标识符。

系统在创建时,变量$o1中存储的其实是系统内部自定义的标识符#1,通过#1找到对应的对象实体(类似于引用传递)。

将变量$o1赋值给$o2后,改变对象o1中所对应的p1值,此时o2中对应的p1值也随之改变:

$o2=$o1;
$o1->p1=10;
echo "<br/>$o2->p1";
var_dump($o2);

改变$o1中的属性时,$o2中对应的属性也随之改变。并且o1和o2的各性质都相同(其实他们指向的是同一个对象)。

其真正的方式如图所示:


而对于引用传值在类对象中的应用:

Class A{
	public $p1=1;
}
$o1=new A();
$o2=&$o1;
$o1->p1=10;
echo $o1->p1;
echo "<br/>";
echo $o2->p1;
echo "<br/>";
var_dump($o1);
echo "<br/>";
var_dump($o2);

改变对象o1中的属性p1时,o2中的属性也随之改变。并不像我们之前对于‘值传递’和‘引用传递的认识’。

其具体的实现方式为:


因此当unset($o1)后$o2还是存在的。

Class A{
	public $p1=1;
}
$o1=new A();
$o2=&$o1;
$o1->p1=10;
unset($o1);
echo $o1->p1;
echo "<br/>";
echo $o2->p1;
echo "<br/>";
var_dump($o1);
echo "<br/>";
var_dump($o2);





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值