gpt4 book ai didi

PHP 魔术方法 __unset() 在调用未设置函数时不起作用

转载 作者:行者123 更新时间:2023-12-04 13:40:31 27 4
gpt4 key购买 nike

我不明白为什么 __unset() 不起作用。

class myclass {
public $name = array();

public function __set($arraykey, $value){
$this->name[$arraykey] = $value;
}

public function __isset($argu){
return isset($this->name[$argu]);
}

public function __unset($argu){
echo "Working: Unset $this->name[$argu]";
unset($this->name[$argu]);
}
}

$obj = new myclass;
$obj->name = 'Arfan Haider';

var_dump(isset($obj->name));

unset($obj->name);

我读到每当调用 unset() 函数时,都会自动调用魔术方法 __unset() 并取消设置变量。

在上面的代码中我使用了 unset 但它没有调用 __unset()。为什么?我在理解魔术方法 __unset() 时是否遗漏了什么?

最佳答案

魔术方法 __set__get__isset__unset 仅在访问 inaccessible 时调用 属性。这意味着私有(private)属性、 protected 属性(在子类外部访问)或尚未创建的属性。

调用内部变量 $_name 而不是 $name,或者将 $name 设置为 privateprotected 而不是 public 将解决您的问题。

注意:

您应该只在需要从扩展类访问它们时才使用 protected 属性或函数 - 不要仅仅因为它们而使用它。

关于PHP 魔术方法 __unset() 在调用未设置函数时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671304/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com