我正在使用 PHP 的重载,我想要做的是;当我调用对象时,它看起来像这样。
$obj->person->name->function();
为此,我使用 __get 和 __call 函数。它们看起来像这样:
function __get($field){
return $this;
}
但是,我想知道 person 和 name 的变量名,因为它可以随时改变。我试着这样做:
function __get($field){
$array[] = $field;
return new object($array);
}
他们被保存了,但是当我添加另一行时,它只是将它添加到数组中。调用函数后它不会清理。我试图在 __call 处清空数组,但这没有帮助。我想谷歌这个,但到目前为止..我不走运。
PHP中是否有本机函数?
——阅读太多?停在这里,剩下的只是更多的解释——
但是 __call 发送数组并将您发送到另一个处理真实函数的类。
原因: 我有 5 个程序员习惯了 mongoDB 类,我们正在将大型代码库从 MongoDB 更改为另一个 DB。通过此修复,我们将能够一次更改整个代码库的数据库,而无需麻烦地构建查询。我们只是在函数类中进行查询。(调用 __call 时访问)。但是,今天的数据库查询的典型行如下所示:
$this->db->accounts->update(<array>);
这条线连接到一个数据库,在该数据库内它连接到帐户。但是,我们有一些“特殊”变量,例如 $core。它看起来像这样:
$this->db->core->accounts->update(<array>);
那个不连接到同一个数据库。
我们需要的是能够在对象内部构建一行对象,这是动态的。它需要找到所调用的名称,因此我们可以将它们放入查询中。仅适用于一条线路,而不是所有线路。它基本上是基于密钥的数据库上的基于文档的基础架构,有很多黑客攻击。:-D
非常感谢!