Поддерживает ли Prado PHP Framework MongoDB? - PullRequest
1 голос
/ 21 июля 2011

PHP-платформа Prado выглядит очень интересно, но прежде чем я углублюсь в это, мне интересно, можно ли использовать MongoDB как базу данных для Prado без каких-либо проблем?

Ответы [ 3 ]

3 голосов
/ 21 июля 2011

Прадо основан на Apache Tapestry, Java Framework. Tapestry не имеет библиотеки MongoDB (если не добавлено недавно)

Будучи PHP, Prado может работать с MongoDB, но необходимо выполнить некоторую настройку PHP, так как драйвер Mongo PHP является сторонней библиотекой, и для MongoDB нет специальной библиотеки Prado.

Сначала настройте MongoDB, установите PHP-драйвер MongoDB, затем создайте класс Prado для взаимодействия с ним (то же самое с Apache Tapestry). Количество возникших проблем будет зависеть от класса, который вы создаете, и от того, насколько хорошо он соединяет Прадо с 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. Кроме того, есть Morph, более высокий уровень абстракции для PHP и MongoDB: http://code.google.com/p/mongodb-morph

Надеюсь, это поможет.

1 голос
/ 21 июля 2011

У вас также есть возможность использовать Yii Framework , который был вдохновлен Прадо.

Yii имеет систему расширений, которая включает расширение для MongoDB, см. Этот список .

0 голосов
/ 18 сентября 2012

Да У Прадо нет проблем с работой с 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 поддается управлению работой Prado, если у вас есть вложенные массивы непосредственно в вашей коллекции mongo. Примечание 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>

Тем не менее, я не думаю, что Прадо - хорошая идея для большого проекта. Вы найдете это не очень продаваемым и медленным. Я думаю, что Прадо - отличный фреймворк, но я ограничен в использовании.

...