attr; //-6ren">
gpt4 book ai didi

没有 __get 函数的 php,你不能从某些实例中获取值?

转载 作者:行者123 更新时间:2023-12-04 14:58:36 24 4
gpt4 key购买 nike

自从我的技术书籍告诉我如此以来,我想知道这是不是真的,例如:

class A {
public $attr = "hmm";
}

$a = new A();
echo $a->attr; // outputs hmm

嗯,这对我有用,这本书说不是为了在课外使用它,它没有制作 __get 函数。我有点困惑。

最佳答案

下面是一个使用魔法方法 __get 的例子:

class User {
private $data = array(
"name" => "Joe",
"age" => "10",
"phrase" => "Hell Yeah"
) ;

public function __get($name){
return (isset($this->data[$name)) ? $this->data[$name] : null ;
}
}

$user = new User() ;

echo $user->age ; //Access the property.

$user->age = 5 ; //Will not be possible, does not exist. But you can define __set

为什么好:它提供所谓的只读 属性。例如对象 mysqli_result 有那个东西。 ($result->num_rows) 属性可以像这样轻松访问,同时不能被重写。您还可以在访问属性时记录任何内容。

为什么不好:由于检查属性是否存在然后在不存在时调用该方法,因此会严重降低性能。

关于没有 __get 函数的 php,你不能从某些实例中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17248848/

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