php 关于set函数,PHP:每次__set函数行为都不同

这样可以在对象上创建新属性.但是,有人可以通过支持链接解释为什么setAttrib以两种不同的方式表现?为什么不引起……等待它……堆栈溢出!! ??

class Test

{

public function setAttrib( $key, $value ) {

echo "setAttrib\n";

// first time: calls $this->__set($key, $value)

// second time: just sets a public property (but, when exactly was it created?)

$this->$key = $value;

}

public function __set( $key, $value ) {

echo "__set\n";

$this->setAttrib($key, $value);

}

}

$test = new Test();

$test->setAttrib('hey', 'It works');

var_dump($test);

生产…

setAttrib

__set

setAttrib

object(Test)#1 (1) {

["hey"]=>

string(8) "It works"

}

编辑:我不是在寻找替代方案.我在寻找这个有效的原因.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值