- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果我有以下注册表类:
Class registry
{
private $_vars;
public function __construct()
{
$this->_vars = array();
}
public function __set($key, $val)
{
$this->_vars[$key] = $val;
}
public function __get($key)
{
if (isset($this->_vars[$key]))
return $this->_vars[$key];
}
public function printAll()
{
print "<pre>".print_r($this->_vars,true)."</pre>";
}
}
$reg = new registry();
$reg->arr = array(1,2,3);
$reg->arr = array_merge($reg->arr,array(4));
$reg->printAll();
是否有更简单的方法将新项目推送到“arr”数组?此代码:'array[] = item' 不适用于魔术设置方法,我无法通过谷歌找到任何有用的信息。感谢您的宝贵时间!
最佳答案
如果你有:
$reg = new registry();
$reg->arr = array(1,2,3);
$reg->arr = 4;
你期待:
Array
(
[arr] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
)
您需要做的就是将您的 __set
方法更新为:
public function __set($key, $val){
if(!array_key_exists($key, $this->_vars)){
$this->_vars[$key] = array();
}
$this->_vars[$key] = array_merge($this->_vars[$key], (array)$val);
}
关于php - 对二维数组使用神奇的 __set() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631944/
我目前正在制作一个基于对象的 API。我有一个名为 Part 的抽象类,每个 child 都会扩展它。 Part 有一个 __set 函数,它将值存储在一个名为 $attributes 的 prote
我是 php 世界的新手。我试图了解 __set() 魔术方法在 php 中的工作原理。这里我使用 __set() 创建一个新属性__set() em> 方法。我有一个 if 语句,用于检查该属性是否
这设法在对象上创建一个新属性。但是,有人可以通过支持链接解释为什么 setAttrib 有两种不同的行为方式吗?为什么它不会导致……等等……堆栈溢出!!?? class Test { public
我正在尝试为类设置一个不明确的变量。沿着这些线的东西: values[$key]; } function __set($key, $value){ $this->value
任何人都可以向我解释这种行为的逻辑吗? 考虑以下情况: class EPPDomain { protected $myField; public static function bui
class Dog { protected $bark = 'woof!'; public function __get($key) { if (isset($this
想知道是否可以执行以下操作(我知道代码不会按预期工作,只是试图达到目的): class Form { private $v = array(); function __set($var
我正在构建一个包含多个输入验证的类,我决定将它们放在 __set 方法中(我不确定这是否是正确的形式,因为我的 OOP 经验有限)。这似乎工作正常,当从类外部传递无效值时抛出正确的错误。但是,如果在类
我在玩弄 PHP 魔法方法(特别是 Property overloading ),并且在进行微基准测试时,遇到了一个我无法解释的怪癖: 看起来一个空体的__set方法比一个有效的方法需要更多的时间来运
如果我有以下注册表类: Class registry { private $_vars; public function __construct() { $th
我正在使用 PHP 实现 OOP 设计。我想知道 PHP 如何处理其神奇方法(如 __get 和 __set)的继承。 class Foo { protected $property1;
我不确定在 PHP 中使用 __get 和 __set 方法有什么值(value)。 这是在数组中设置值的代码。 class myclass { public $sotre = array(); pu
这个问题在这里已经有了答案: PHP Inherited parent method can't access child's private property (3 个答案) 关闭 9 年前。 $
经过一些研究,我最终找到了一个我很快就会在这里问的问题的答案;您如何通过 PHP 中的 __get 和 __set 魔术方法处理数组?每当我尝试使用类似 $object->foo['bar'] = 4
我有一个定制的 MVC PHP 框架,我正在重写它并且对性能和魔术方法有疑问。对于框架的模型部分,我在想如果 __get/__set 魔法方法会导致太多的性能损失而不值得使用。我的意思是访问(读取和写
我正在研究 PHP 中的 OOP,并尝试编写一个基本的 Session 类,它将创建一个 Session 数组。在实例化类时,用户将提供数组的第一维,然后我希望他们能够向该 session 添加任何变
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
PHP 5 引入了魔术方法 __get() 和 __set()。根据我的理解,这是必须编写每个成员的 getter 和 setter 的捷径; $var = $name; } fun
在 OO 编程中,使用魔法方法 __get() 和 __set() 会不会被人看不起,这些会导致类的封装泄漏吗?例如: class User { private $username;
这样做会被认为是好的做法吗... 我的 A 类具有以下定义: class A{ private $_varOne; private $_varTwo; priva
我是一名优秀的程序员,十分优秀!