栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

您可以在PHP中动态创建实例属性吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

您可以在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;  }}

…主要是因为,您只需要一次或至少在执行路径中非常明确的位置将数组的内容转储到相应命名的类字段中。因此,除非您确实需要动态行为,否则请使用最后一个示例用数据填充对象。

这称为重载
http://php.net/manual/en/language.oop5.overloading.php



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443076.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号