php 魔术方法 get,PHP魔术方法

阅读: 评论:0

php 魔术方法 get,PHP魔术方法

php 魔术方法 get,PHP魔术方法

我遇到了一个有趣的问题.在使用[]的同一操作中创建数组属性并为其分配值似乎是错误的.

class T

{

public function __get($property)

{

if (!isset($this->{$property}))

{

$this->{$property} = array();

}

return $this->{$property};

}

public function __set($key, $val)

{

$this->{$key} = $val;

}

}

$testObj = new T();

$testObj->testArr[] = 1;

$testObj->testArr[] = 2;

$testObj->testArr[] = 3;

var_dump($testObj->testArr);

输出以下内容:

array(2) { [0]=> int(2) [1]=> int(3) }

因此1确实像帽子中的兔子一样神奇地消失在数组初始化中.如果我在分配之前尝试全部$testObj-> testArr或什至将1分配为$testObj-> testArr = array(1); -效果很好.但是我想了解这种情况并有一个通用的解决方案,而无需先初始化数组.有办法解决吗?

解决方法:

$testObj->testArr[] = 1;

通知您:

Notice: Indirect modification of overloaded property T::$testArr has no effect in test.php on line 24

确保您的错误报告为turned on.

标签:properties,get,arrays,php

来源: .html

本文发布于:2024-02-02 12:10:33,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170684703343704.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:魔术   方法   php   PHP
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23