首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prado PHP框架支持MongoDB吗?

Prado PHP框架支持MongoDB吗?
EN

Stack Overflow用户
提问于 2011-07-21 11:46:19
回答 3查看 379关注 0票数 1

Prado PHP框架看起来非常有趣,但在我深入讨论之前,我想知道MongoDB是否可以作为Prado的数据库而没有任何问题?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-21 12:06:59

Prado基于Apache Tapestry,一个Java框架。Tapestry没有MongoDB库(除非最近添加)

作为PHP,Prado可以与MongoDB一起工作,但必须进行一些PHP配置,因为Mongo PHP驱动程序是第三方库,并且没有专门针对MongoDB的Prado库。

首先,配置MongoDB,安装Apache驱动程序,然后创建一个MongoDB类来与之交互(与Apache Tapestry相同)。遇到的问题的数量将与您创建的类以及它在Prado与MongoDB之间的桥梁有多好有关。

标准的PHP代码如下所示:

代码语言:javascript
复制
<?php
try {
  // open connection to MongoDB server
  $conn = new Mongo('localhost');

  // access database
  $db = $conn->test;

  // access collection
  $collection = $db->items;

  // execute query
  // retrieve all documents
  $cursor = $collection->find();

  // iterate through the result set
  // print each document
  echo $cursor->count() . ' document(s) found. <br/>';  
  foreach ($cursor as $obj) {
    echo 'Name: ' . $obj['name'] . '<br/>';
    echo 'Quantity: ' . $obj['quantity'] . '<br/>';
    echo 'Price: ' . $obj['price'] . '<br/>';
    echo '<br/>';
  }

  // disconnect from server
  $conn->close();
} catch (MongoConnectionException $e) {
  die('Error connecting to MongoDB server');
} catch (MongoException $e) {
  die('Error: ' . $e->getMessage());
}
?>

虽然Prado看起来是一个很好的概念,但我建议您使用更成熟的框架,如Cake、Zend或CodeIgniter。此外,还有一个更高层次的PHP和MongoDB抽象:http://code.google.com/p/mongodb-morph

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2011-07-21 15:56:52

您还可以使用从Prado中获得高度灵感的Yii Framework

Yii有一个扩展系统,其中包括一个用于MongoDB的扩展,请参阅此list

票数 1
EN

Stack Overflow用户

发布于 2012-09-18 23:54:07

是的,Prado在使用mongoDB时没有问题,但您必须使用自己的模型库,如morph。Prado是一个可视化框架,它恰好包含一个模型库,但不是必须使用的。

代码语言:javascript
复制
  <?php

        class Home extends TPage
        {
            protected function populateData()
            {
                 $conn = new Mongo('localhost');  // normally should be in your setup
                 $db = $conn->test;
                 $collection = $db->blogs;
                 $cursor = $collection->find();

                foreach ($cursor as $obj) {
                         $result[] = $obj;
                          }
                   return $result

            }
            public function onLoad($param)
            {
                if (!$this->IsPostBack)
                {
                    // Populate the Test Drop Down from database values

                    $this->myRepeater->DataSource = $this->ListTest;

                    $this->myRepeater->dataBind();
                }
            }           
        }
        ?>

实际上,如果您在mongo集合中直接嵌套了数组,那么mongoDB就适合于Prado控件的工作方式。注意:dataSource=<%# $this->data->comments %>正在嵌套数组注释。

代码语言:javascript
复制
  <com:TRepeater ID="test">

    <prop:ItemTemplate>
      <tr>
        <td><%#  $this->data->blogName %> </td>   
           <com:TRepeater ID="test" dataSource=<%#  $this->data->comments %> >

           <prop:ItemTemplate>
              <ul>
               <li><%#  $this->data->commentText%> </li>   

             </ul>
          </prop:ItemTemplate>

          </com:TRepeater>
      </tr>
    </prop:ItemTemplate>

  </com:TRepeater>

也就是说,我不认为Prado是一个大项目的好主意。你会发现它不是很畅销,也不是很慢。我认为Prado是一个很棒的框架,但我的使用有限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6771040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档