1

Prado PHPフレームワークは非常に興味深いように見えますが、詳しく説明する前に、MongoDBをPradoのデータベースとして問題なく使用できるかどうか疑問に思っています。

4

3 に答える 3

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

お役に立てれば。

于 2011-07-21T04:06:59.140 に答える
1

プラドからインスピレーションを得たYiiフレームワークを使用することもできます。

Yiiには拡張システムがあり、MongoDBの拡張機能が含まれています。このリストを参照してください。

于 2011-07-21T07:56:52.157 に答える
0

はい、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>

とはいえ、プラドは大規模なプロジェクトには向いていないと思います。あなたはそれがあまり売れず、遅いことに気付くでしょう。プラドは素晴らしいフレームワークだと思いますが、使用法は限られています。

于 2012-09-18T15:54:06.593 に答える