使用PHP显示MongoDB集合结果

时间:2012-05-27 01:45:06

标签: php mongodb

我正在读一本书:“PHP和MongoDB Web开发”

他们在这里创建了一个dbconnection.php脚本:

<?php

class DBConnection
{
    const HOST   = 'localhost';
    const PORT   = 27017;
    const DBNAME = 'myblogsite';

    private static $instance;

    public $connection;    
    public $database;

    private function __construct()
    {
        $connectionString = sprintf('mongodb://%s:%d', DBConnection::HOST, DBConnection::PORT);

        try {

            $this->connection = new Mongo($connectionString);
            $this->database = $this->connection->selectDB(DBConnection::DBNAME);

        } catch (MongoConnectionException $e) {
            throw $e;
        }
    }

    static public function instantiate()
    {
        if (!isset(self::$instance)) {
            $class = __CLASS__;
            self::$instance = new $class;
        }

        return self::$instance;
    }

    public function getCollection($name)
    {
        return $this->database->selectCollection($name);
    }
}

我想使用此脚本通过名为blogs.php的文件列出博客文章:

<?php

require_once('dbconnection.php');

class Blogs
{
    const COLLECTION = 'articles';

    private $_mongo;
    private $_collection;
    private $_blogs;

    public function __construct()
    {
        $this->_mongo = DBConnection::instantiate();
        $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    }


}

$blogs = new Blogs();


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="style.css" /> 
    <title>My Blog Site</title>
    </head>

          <body>
              <div id="contentarea">
                  <div id="innercontentarea">
                      <h1>My Blogs</h1>

                      <?php while ($blogs->hasNext()):
                        $article = $blogs->getNext(); ?>
                        <h2><?php echo $article['title']; ?></h2>
                        <p><?php echo substr($article['content'], 0, 200).'...'; ?></p>
                        <a href="blog.php?id=<?php echo $article['_id']; ?>">Read more</a>
                      <?php endwhile; ?>
                  </div>
              </div>
          </body>
</html>

我不确定如何从这里开始。

1 个答案:

答案 0 :(得分:1)

您可以参考Blogs集合;下一步是查询它:

public function __construct()
{
    $this->_mongo = DBConnection::instantiate();
    $this->_collection = $this->_mongo->getCollection(Blogs::COLLECTION);
    $this->_blogs = $this->_collection->find();
}

这将为您提供结果集的引用,您可以迭代并获取各个博客文档。然后,您必须弄清楚如何使这些文章可以访问您的php / html。

(用它作为视觉参考http://devzone.zend.com/1730/getting-started-with-mongodb-and-php/