/** * Calls PDO query with PDO::FETCH_CLASS option; * @link http://ro1.php.net/pdo.query * @param string $statement * @param string $classname * @param array $params * @param array $ctorargs * @return array|null * @throws \PDOException */ public function queryClass($statement, $classname, $params = array(), $ctorargs = array()) { $start = microtime(true); $q = $statement . ''; if (is_a($statement, ModelCondition::className())) { foreach ($statement->getJoinParams() as $k => $v) { $params[$k] = $v; } } $statement = $this->prepare($q); try { $statement->execute($params); } catch (\PDOException $e) { $this->error($e->getMessage(), array('File' => __FILE__, 'Line' => __LINE__ - 4, 'Query' => $q, 'Params' => $params, 'Trace' => $e->getTraceAsString())); return null; } $objects = array(); while ($ob = $statement->fetchObject($classname, $ctorargs)) { $objects[] = $ob; } $this->debug($q, array('params' => $params, 'intoClass' => $classname, 'controllerArguments' => $ctorargs, 'rows' => count($objects), 'time' => microtime(true) - $start, 'dns' => $this->dns)); return $objects; }