gpt4 book ai didi

php - 如何从另一个 PHP 类连接到 MongoDB?

转载 作者:可可西里 更新时间:2023-11-01 09:08:37 24 4
gpt4 key购买 nike

我有以下代码连接到 MongoDB:

try {
$m = new Mongo('mongodb://'.$MONGO['servers'][$i]['mongo_host'].':'.$MONGO['servers'][$i]['mongo_port']);

} catch (MongoConnectionException $e) {
die('Failed to connect to MongoDB '.$e->getMessage());
}

// select a database
$db = $m->selectDB($MONGO["servers"][$i]["mongo_db"]);

然后我创建了一个 PHP 类,我想在其中检索/更新 Mongo 中的数据。我不知道如何访问之前创建的与 Mongo 的连接。

class Shop {
var $id;

public function __construct($id) {
$this->id = $id;
$this->info = $this->returnShopInfo($id);
$this->is_live = $this->info['is_live'];
}
//returns shop information from the database
public function returnShopInfo () {
$where = array('_id' => $this->id);
return $db->shops->findOne($where);
}
}

代码是这样的:

$shop = new Shop($id);
print_r ($shop->info());

最佳答案

您可以只使用具有相同连接字符串的“new Mongo()”,它将使用相同的连接,但我建议您在 Mongo 连接类周围包装一个单例以检索相同的连接对象。大概是这样的:

<?php
class myprojMongoSingleton
{
static $db = NULL;

static function getMongoCon()
{
if (self::$db === null)
{
try {
$m = new Mongo('mongodb://'.$MONGO['servers'][$i]['mongo_host'].':'.$MONGO['servers'][$i]['mongo_port']);

} catch (MongoConnectionException $e) {
die('Failed to connect to MongoDB '.$e->getMessage());
}
self::$db = $m;
}

return self::$db;
}
}

然后在您的应用程序的任何其他地方调用它:

$m = myprojMongoSingleton::getMongoCon();

关于php - 如何从另一个 PHP 类连接到 MongoDB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9990799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com