我有一个基类,它使用php魔术方法__get和__set,可以修改扩展类中的私有属性。然后,我为相关的私有属性构建setter getter函数(类似于http://www.beaconfire-red.com/epic-stufle/better-getters-and-setters-php)
class User extends BaseObject {
public $id = -1;
private $_status = "";
function __construct($members = array()) {
parent::__construct($members);
}
//Setter/Getter
public function status($value = null) {
if($value) {
$this->_status = $value;
} else {
return $this->_status;
}
}
public function jsonSerialize() {
$json = array();
foreach($this as $key => $value) {
$json[$key] = $value;
}
return $json;
}
使用ReflectionProperty::SetAccessible:
public function jsonSerialize()
{
$json = array();
$class = new ReflectionClass($this);
foreach ($class->getProperties() as $key => $value) {
$value->setAccessible(true);
$json[$value->getName()] = $value->getValue($this);
}
return $json;
}
这是为了回答明确的问题。但我不确定你是否应该使用这种设计来解决你的问题。
如何在Kotlin中创建一个具有私有getter(或只是没有)但具有公共setter的属性? 不能使用错误: 在我的例子中,原因是Java Interop:我希望我的Java代码能够调用,但不能调用。
有两种类型的对象属性。 第一种是 数据属性。我们已经知道如何使用它们了。到目前为止,我们使用过的所有属性都是数据属性。 第二种类型的属性是新东西。它是 访问器属性(accessor properties)。它们本质上是用于获取和设置值的函数,但从外部代码来看就像常规属性。 Getter 和 setter 访问器属性由 “getter” 和 “setter” 方法表示。在对象字面量中,它们用 get
我声明了以下类,并声明了作为一个属性,该属性使用属性初始化decorators.however没有列出作为对象的属性,而是列出。这是如何工作的?
问题内容: 我熟悉Java,但是刚开始学习JavaFX,尤其是学习JavaFX属性。我了解Oracle的以下示例所示的基本设计模式: 我不明白的是什么时候/为什么要使用getter和setter方法,而不是直接使用Property? 我在想的是,您可能希望在getter和/或setter中有一些自定义代码,这些代码可能对数据做一些前后操作/验证,但是如果您创建自定义getter和/或setter,
假设我有一个类Things,它包含许多不同的实例变量。我为它们分别创建了单独的setter和getter方法。如果我想创建另一个存储things'class'的class2,那么为things类中的实例变量创建额外的setter和getter方法是很好的编码方法。另外,假设我有另一个使用class2的class3,那么重复setter和getter方法会产生高耦合吗?