2011-07-21 10 views
1

Prado PHPフレームワークは非常に興味深いですが、私が没頭する前に、MongoDBをPradoのデータベースとして問題なく使用できるかどうか疑問に思っていますか?Prado PHPフレームワークはMongoDBをサポートしていますか?

+1

私は間違っているかもしれませんが、2005年以来死んでしまったようです:-S – zerkms

+2

@zerkmsあなたは間違っています。最新のリリースは17日前です。 http://www.pradoframework.com/forum/index.php?topic=13798.0 – ceejayoz

答えて

3

PradoはApache Tapestry(Javaフレームワーク)をベースにしています。 TapestryにはMongoDBライブラリがありません(最近追加されていない限り)

PongoはMongoDBで動作しますが、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()); 
} 
?> 

プラドは偉大な概念のように見えますが、私は、そのようなケーキ、Zendの、またはCodeIgniterのような、より確立されたフレームワークを使用してお勧めします。さらに、PHPとMongoDBの抽象度の高い、Morphがあります。http://code.google.com/p/mongodb-morph

希望します。

1

また、プラドから非常に刺激されたYii Frameworkを使用する可能性もあります。

Yiiには拡張システムがあり、MongoDBの拡張機能が含まれています(listを参照)。

0

はい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(); 
       } 
      }   
     } 
     ?> 

実際に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> 

私はプラドが大規模なプロジェクトのための良いアイデアだとは言いませんでした。あなたはそれほど売りやすくて遅くないことがわかります。私はプラドが素晴らしいフレームワークだと思うが、私は使用が限られている。

関連する問題