php - setter 个对象未被调用
php - setter of objects is not called
我有以下问题:
我正在处理的应用程序的当前代码包含大量如下定义:
$obj = new stdClass();
$obj->a->b = "something";
这导致:PHP严格标准:从[某处]中的空值创建默认对象。
正确的形式是:
$obj = new stdClass();
$obj->a = new stdClass();
$obj->a->b = "something";
现在的问题是:在整个代码中替换它会花费很长时间(考虑数以千计的情况,有条件等)。
所以我正在考虑用自定义对象替换 stdClass(这将是代码中的简单替换),为其创建一个 setter 来验证变量 属性 是否是一个对象,如果在设置第二个 属性.
之前将其定义为对象
所以我们得到:
class MockObject() {
public function __set($property, $value) {
// Do stuff here
}
}
$obj = new MockObject();
$object->a->b = "something";
问题是在执行$object->a->b = "something";的时候setter 没有被调用(因为你实际上并没有设置 a 属性,而是 b 属性)。
有什么办法解决这个问题吗?或者是否有其他解决方案?
注意:显式调用 __set() 方法不是解决方案,因为它与将属性定义为 stdClass() 相同。
为什么不在 A class
的构造函数中初始化 b
变量?
public function __construct()
{
$this->b = new B();
}
你知道魔法 setter。
也使用魔法getter。
如果它想要获得一个不存在的 var:创建一个(在数组或类似的东西中)它是 class.
的一个实例
我有以下问题:
我正在处理的应用程序的当前代码包含大量如下定义:
$obj = new stdClass();
$obj->a->b = "something";
这导致:PHP严格标准:从[某处]中的空值创建默认对象。
正确的形式是:
$obj = new stdClass();
$obj->a = new stdClass();
$obj->a->b = "something";
现在的问题是:在整个代码中替换它会花费很长时间(考虑数以千计的情况,有条件等)。
所以我正在考虑用自定义对象替换 stdClass(这将是代码中的简单替换),为其创建一个 setter 来验证变量 属性 是否是一个对象,如果在设置第二个 属性.
之前将其定义为对象所以我们得到:
class MockObject() {
public function __set($property, $value) {
// Do stuff here
}
}
$obj = new MockObject();
$object->a->b = "something";
问题是在执行$object->a->b = "something";的时候setter 没有被调用(因为你实际上并没有设置 a 属性,而是 b 属性)。
有什么办法解决这个问题吗?或者是否有其他解决方案?
注意:显式调用 __set() 方法不是解决方案,因为它与将属性定义为 stdClass() 相同。
为什么不在 A class
的构造函数中初始化 b
变量?
public function __construct()
{
$this->b = new B();
}
你知道魔法 setter。 也使用魔法getter。
如果它想要获得一个不存在的 var:创建一个(在数组或类似的东西中)它是 class.
的一个实例