【发布时间】:2012-02-09 12:04:28
【问题描述】:
我开始学习 PHP 并且拥有不错的 Java 背景。我遇到了以下 PHP 语言的编码挑战:
我希望能够以 JSON 格式对我的 PHP 类进行编码/解码。我已经为类私有属性创建了利用 getter/setter 方法的 PHP 类。这导致本机 json_encode 方法在编码期间跳过这些属性。我找到了以下脚本,它获取私有属性并将它们格式化为 JSON 字符串:
<?php
public function encodeJSON()
{
foreach ($this as $key => $value)
{
$json->$key = $value;
}
return json_encode($json);
}
public function decodeJSON($json_str)
{
$json = json_decode($json_str, 1);
foreach ($json as $key => $value)
{
$this->$key = $value;
}
}
?>
我研究了这段代码并意识到它是如何生成字符串和对象的。现在我想将此代码推送到一个抽象类中,以便我可以扩展该类并接收此功能。
问题是我无法从抽象类引用具体类中的私有属性。我对 Java 的了解告诉我,如果不指定抽象方法并强制每个具体类实现它,我可能无法做到这一点。我尝试了几次尝试在 PHP 中使用反射并将具体类传递给抽象类的构造函数。谁能指出我正确的方向,或者告诉我这是否不可能?
【问题讨论】:
-
它是否适用于
protected? (私有变量的概念是不能在交付的类中看到它们,所以这是正确的行为) -
@Vyktor 是的。我太专注于学习新东西,以至于忘记了我的基本编程基础。谢谢你把它捡起来。如果您将其发布为答案,我会接受。