Prado PHP框架看起来非常有趣,但在我深入讨论之前,我想知道MongoDB是否可以作为Prado的数据库而没有任何问题?
发布于 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代码如下所示:
<?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
希望这能有所帮助。
发布于 2011-07-21 15:56:52
您还可以使用从Prado中获得高度灵感的Yii Framework。
Yii有一个扩展系统,其中包括一个用于MongoDB的扩展,请参阅此list。
发布于 2012-09-18 23:54:07
是的,Prado在使用mongoDB时没有问题,但您必须使用自己的模型库,如morph。Prado是一个可视化框架,它恰好包含一个模型库,但不是必须使用的。
<?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 %>正在嵌套数组注释。
<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是一个很棒的框架,但我的使用有限。
https://stackoverflow.com/questions/6771040
复制相似问题