【发布时间】:2012-11-30 04:05:09
【问题描述】:
谁能告诉我是否有解决方案将带有私有成员的 PHP 类保存到 MongoDb?我不断收到以下错误
zero-length keys are not allowed, did you use $ with double quotes?'
我看到至少有两个与同一个问题有关的现有问题,但没有真正的答案。
Question 1
Question 2
我所有的持久性类都有一个我需要可用的私有成员,但我不想创建一个函数来避免私有成员的必要性,因为这是一个基于实例的类,它具有利用私有成员的多个功能。
Web 服务器 Apache/2.2.22
PHP 版本 PHP 5.4.6
PHP 扩展 mongo/1.2.6
这将是一个示例实现,请不要批评代码本身,它只是为了说明行为的类型,即 $this 的 Save 和基本类型中的 $private 成员:
<?php
class PersistableObject extends AbstractBasePersistableObject
{
public $PublicSubTypeProperty;
public function __construct()
{
parent::__construct();
}
public function GetDalConfigurationFromSubType()
{
//This object is just a wrapper DAL implemented based on
//the php Mongo, MongoDb and MongoCollection objects
return new MongoBasedDal();
}
}
abstract class AbstractBasePersistableObject
{
private $dalRef = null;
public $PublicBaseProperty;
public abstract function GetDalConfigurationFromSubType();
public function __construct()
{
$this->dalRef = $this->GetDalConfigurationFromSubType();
}
public function Save()
{
$this->dalRef->Save($this);
}
}
?>
【问题讨论】:
-
你是在课堂上存钱吗?或者只是保存类对象?您可以发布保存代码吗?
-
@daveh,我已经在原始问题中发布了编码
-
我已经升级到Mongodb 2.2.2,问题依旧。