php 动态创建类属性,你可以在PHP中动态创建实例属性吗?

有点。有一些魔术方法允许你挂钩你自己的代码,在运行时实现类的行为:

class foo {

public function __get($name) {

return('dynamic!');

}

public function __set($name, $value) {

$this->internalData[$name] = $value;

}

}

这是一个动态getter和setter方法的例子,它允许你在访问对象属性时执行行为。例如

print(new foo()->someProperty);

将打印,在这种情况下,“动态!并且您还可以为任意命名的属性分配值,在这种情况下,将静默调用__set()方法。 __call($ name,$ params)方法对于对象方法调用也是一样。在特殊情况下非常有用。但大多数时候,你会得到:

class foo {

public function __construct() {

foreach(getSomeDataArray() as $k => $value)

$this->{$k} = $value;

}

}

…因为大多数情况下,你需要的是将数组的内容转储到相应命名的类字段一次,或者至少在执行路径的非常明确的点。所以,除非你真的需要动态行为,使用最后一个例子用数据填充你的对象。

This is called overloading 07000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值