gpt4 book ai didi

php - 基本 __get 实现的原因

转载 作者:可可西里 更新时间:2023-11-01 00:10:35 24 4
gpt4 key购买 nike

Other similar questions:

Why I should use __get() and __set()-magic methods in php?
When do/should I use __construct(), __get(), __set(), and __call() in PHP?

首先,我完全理解如何在 PHP 中实现 __get__set 方法,并且遇到过使用这些方法有益的场景。

但是,我遇到并编写了如下所示的代码:

class SomeObject {

protected $data = array();

public function __set($key, $val) {
$this->data[$key] = $val;
}

public function __get($key) {
return $this->data[$key];
}

}

为什么我们需要这样做?我使用了未定义 __get__set 方法的对象,并且仍然可以添加未定义的属性、检索与这些属性关联的值、调用 isset()unset() 在这些属性上。

当 PHP 中的对象已经表现出类似的行为时,我们真的需要使用上面的代码来实现这些神奇的方法吗?

请注意,我指的不是在 __set__get 方法中使用更多代码来特殊处理请求的数据,而是非常基本的实现,例如代码以上。

最佳答案

如果您只是将它们用作数组的美化包装器(即绝对没有额外的逻辑),我认为它们不会提供任何好处。然而,它们确实有一个缺点,即您需要为它们编写代码。该代码可能存在错误或不完整。

您是否为了简洁而省略了 __isset?因为如果您确实使用了 __get__set 但没有提供 __isset,那么您只是给自己写了一个错误。

See what I did there

关于php - 基本 __get 实现的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364747/

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