_rows); } /** * @brief next element (iterator) * @return array */ public function next() { return next($this->_rows); } /** * @brief index of current element (iterator) * @return array */ public function key() { return key($this->_rows); } /** * @brief first element (pointer reset, iterator) * @return array */ public function rewind() { return reset($this->_rows); } /** * @brief check current element (iterator) * @return bool */ public function valid() { return (bool) is_array($this->current()); } /** * @brief count the results * @return int */ public function count() { return count($this->_rows); } } /** * @brief interface database definition */ interface IDatabase { /** * @brief create database connection * @param string $host IP or domain of the database host * @param string $user user * @param string $passwd password */ public function connect($host, $user, $pw); /** * @brief close database connection */ public function close(); /** * @brief select database * @param string $name name of database */ public function select($db); /** * @brief execute query * @param string $sql query * @return mixed */ public function execute($sql); /** * @brief query * @param string $sql * @param int $offset * @param int $limit * @return TDatabaseResultSet */ public function query($sql, $limit = -1, $offset = 0); /** * @brief escape * @param string $string * @return string */ public function escape($string); /** * @return integer the last id */ public function insertId(); } /** * @brief abstract database layer definition */ abstract class TDatabase implements IDatabase { /** * @brief current database * @var string */ protected $database = ''; /** * @brief database handle * @var resource */ protected $resource = false; /** * @brief container with exectuted queries * @var array */ protected $statements = array(); } ?>