Prado PHP 框架看起来很有趣,但在我深入研究之前,我想知道 MongoDB 是否可以毫无问题地用作 Prado 的数据库?
3 回答
Prado 基于 Apache Tapestry,一个 Java 框架。Tapestry 没有 MongoDB 库(除非最近添加)
作为 PHP,Prado 可以与 MongoDB 一起使用,但必须进行一些 PHP 配置,因为 Mongo PHP 驱动程序是第三方库,并且没有特定的 Prado 库用于 MongoDB。
首先,配置 MongoDB,安装 MongoDB PHP Driver,然后创建一个 Prado 类与之交互(与 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。此外还有 Morph,一个更高层次的 PHP 和 MongoDB 抽象:http ://code.google.com/p/mongodb-morph
希望这可以帮助。
是的,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 是一个很棒的框架,但我的用途有限。