public function query($sql, RowMapper $mapper, $arguments = null)
 {
     $records = array();
     $sql = $this->prepareArgs($sql, $arguments);
     $results = $this->driver->query($sql, $this->getConnection());
     while ($row = $this->driver->resultSetObject($results)) {
         $record = $mapper->mapRow($row);
         Args::notNull($record, 'row mapper return value');
         array_push($records, $record);
     }
     return $records;
 }
Exemple #2
0
 /**
  * Set the current page
  * @param mixed $page An instance of web page or an Identifier for a web page
  * @todo add page params
  */
 public function setPage($page)
 {
     Args::notNull($page, 'page');
     if ($page instanceof Identifier) {
         if ($page->of(WebPage::getIdentifier())) {
             $target = new PageRequestTarget($page);
         } else {
             throw new \InvalidArgumentException("Expected identifier to be for a web page");
         }
     } else {
         if ($page instanceof WebPage) {
             PageMap::get()->addOrUpdate($page);
             $target = new PageInstanceRequestTarget($page);
         } else {
             throw new \InvalidArgumentException(sprintf("setPage expects an identifier for a web page or an instance of a web page and not a %s", get_class($page)));
         }
     }
     if ($this->getRequestCycle()->containsTarget(ListenerRequestTarget::getIdentifier())) {
         $url = $this->getRequestCycle()->generateUrl($target);
         $this->getRequestCycle()->addTarget(new RedirectRequestTarget($url));
     } else {
         $this->getRequestCycle()->addTarget($target);
     }
 }