Prado PHPフレームワークは非常に興味深いように見えますが、詳しく説明する前に、MongoDBをPradoのデータベースとして問題なく使用できるかどうか疑問に思っています。
3 に答える
Pradoは、JavaフレームワークであるApacheTapestryに基づいています。TapestryにはMongoDBライブラリがありません(最近追加された場合を除く)
PHPであるPradoはMongoDBと連携できますが、Mongo PHPドライバーはサードパーティのライブラリであり、MongoDB用の特定のPradoライブラリがないため、PHP構成を行う必要があります。
まず、MongoDBを構成し、MongoDB PHPドライバーをインストールしてから、それと対話するための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());
}
?>
プラドは素晴らしいコンセプトのように見えますが、Cake、Zend、CodeIgniterなどのより確立されたフレームワークを使用することをお勧めします。さらに、PHPとMongoDBのより高いレベルの抽象化であるMorphがあります:http ://code.google.com/p/mongodb-morph
お役に立てれば。
プラドからインスピレーションを得たYiiフレームワークを使用することもできます。
Yiiには拡張システムがあり、MongoDBの拡張機能が含まれています。このリストを参照してください。
はい、PradoはmongoDBでの作業に問題はありませんが、morphなどの独自のモデルライブラリを使用する必要があります。プラドは、たまたまモデルライブラリが含まれているビジュアルフレームワークですが、使用する必要はありません。
<?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();
}
}
}
?>
実際、mongoDBは、mongoコレクションに直接ネストされた配列がある場合に、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>
とはいえ、プラドは大規模なプロジェクトには向いていないと思います。あなたはそれがあまり売れず、遅いことに気付くでしょう。プラドは素晴らしいフレームワークだと思いますが、使用法は限られています。