【发布时间】:2013-08-06 08:42:56
【问题描述】:
我需要在一个类中创建一个名为“aip-aup”的属性,但我无法让它工作。
首先尝试将其与属性定义放在一起。不幸的是,括号中的属性定义是不允许的。
这失败了(在__construct()):
$this->${'aip-aup'} = array();
给出错误“未定义的变量'aip-aup'”。
这也是(在__set 方法中):
$this->${'aip-aup'}[$property] = $value;
还尝试创建自定义辅助方法,但什么也没做:
$this->createProperty('aip-aup', array());
这里有什么帮助吗?
该属性必须是公开的,所以应该可行?
【问题讨论】:
-
这违背了 OOP 实践。由于破折号,“aip-aup”也是一个糟糕的属性名称。
-
我想要我的连字符 =/ 主要也是探索 PHP 的限制和可能性。
-
$this->{'aip-aup'} = array(); -
这些类型的动态通常会实现魔术 getter 和 setter,你有什么理由不能在这里做同样的事情?
-
@MarkBaker Lol,我在括号前面有一个美元符号。起初我以为你的回复是多余的,但仔细观察后,我意识到它是多么简单和精彩。结案。谢谢。
标签: php oop dynamic-properties