【发布时间】:2017-07-25 21:44:34
【问题描述】:
这个错误会有很多问题,我还没有找到正确的解决方案。我的严格是 PHP 本身,而不是其他人发布的示例框架。
我正在尝试使用 __set 和 __get 重载以在数据数组中动态创建这些属性,但是,当我尝试使用以下示例中的类似属性创建属性时,我收到此错误。但是如果是字符串或int我可以创建属性,所以我不明白为什么它不会传递值?
间接修改重载属性 ::fields 无效
类 getter 方法:
public function __get($name)
{
if (array_key_exists($name, $this->data))
{
return $this->data[$name];
}
}
试图生成一个数组字段。 (这会导致错误)
$fieldset->fields[] = [
'handle' => 'first_name',
'name' => 'First Name',
];
这很好用,但不是我要求的,我希望字段成为索引数组。
$fieldset->fields = [
'handle' => 'first_name',
'name' => 'First Name',
];
如果其他人有更好的方法,如果这是不可能的,我很想知道相同结果的替代方法。多谢你们!
【问题讨论】:
-
最后一个例子是一个关联数组。第一个例子是一个多维数组。你能分享一下你在寻找什么结果吗?
-
@MagnusEriksson 我希望
$fieldset->fields像fields[0]、fields[1]、fields[2]等。还有它们自己的数组属性。就像如果你创建动态数组,$fields[] = 'value1',$fields[] = 'value2',希望能解释一下。 -
这不是关联数组,而是索引数组。但是,您不能使用
__set()函数来做到这一点。您需要创建自己的方法来将新元素推送到数组属性。 -
@MagnusEriksson Gotcha,是的,这就是我的意思。你是说
__set不可能吗?我正在构建它的基础,以在公共范围内设置对象的属性为基础,而不必调用特定的函数,基本上是为了便于使用。
标签: php arrays overloading