0

我对术语很模糊,我尝试过搜索 - 但到目前为止还没有变得更明智。我正在尝试在 PHP 中学习 OOP,并且正在尝试编写一个将值/键对存储在数据库中的配置类。它工作得很好,但不是我想要的工作方式。

无论如何,这就是我所做的:

$config=new Config();
$keyValue=$config->keyName;                      // Get key value
$config->keyName=$newKeyvalue;                   // Set key value
$description=$config->getDescription($keyName);  // get description
$config->setDescription($keyName, $description); // set description

这是我想做的(只有最后两行,因为那些是相关的):

$description=$config->keyName->description;     // get description
$config->keyName->description=$newDescription;  // set description

设置/获取键值是使用_get( )/ _set() 完成的,但是如何以相同的方式设置键的“子属性”?

编辑:解决了。_ get/ _set/_ isset/ _unset 工作正常的工作班在这里:http ://pastebin.com/TFAA8Dcq

(注意:几乎没有错误检查,并且这个类允许设置动态对象名称,这可能不是世界上最安全的事情)

4

1 回答 1

0

您还需要将“keyName”属性设为一个类。例如,$config->keyName = new stdClass;将允许您然后设置$config->keyName->property = "something else";

显然,在这种情况下,您不能再将 keyName 属性直接设置为字符串。但是,您可以在 PHP 类中实现 __toString 魔术方法,以便在将 Class 隐式视为字符串时自动返回字符串变量。

于 2013-09-13T20:08:12.750 回答