2010-10-01 13:32 阅读 29

哪些数据库模式(ORM,DAO,Active Record等)用于小型/中型项目?

I writing real estate web site with basic function for choosing and ordering realty.

It is small/simple project, but I want to write it in way, so in future I, or other developers, can turn it into medium business app without rewriting it from scratch.

So what kind of patterns could you advice me to use for dealing with database?

For now I have this:

class db_DBConnection
    // basic singleton pattern here...

// primary class to be extende by other table DAOs
abstract class db_Table
protected $table;
protected $order_by;

 * Executes specified query with prepared statements
 * returns statement object, which can fetch data.
 * @param $sql - SQL query to execute
 * @param $params - bind values to markers through associative arrays
protected function executeQuery($sql, $params = null)
    $dbh = db_DBConnection::getConnection();
    $stmt = $dbh->prepare($sql);
    // binds values to markers and executes query
    return $stmt;

 * @param id - id of row to retrieve from database
 * It sends SQL query and id to executeQuery
 * function returns associative array, representing
 * database row.
public function find($id)
    $sql = 'SELECT * FROM ' . $this->table . ' WHERE id=:id LIMIT 1';
            // bind id
    $params = array( ':id' => $id );
    // execute and return associative array
    return $this->executeQuery($sql, $params)->fetch(PDO::FETCH_ASSOC);

public function findAll($quantity, $where)
// Returns array of
// associative arrays of table rows :)
// TODO: write this function

abstract protected function insert();

abstract protected function update();

abstract protected function delete();

    // ...
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    duanshangying5102 duanshangying5102 2010-10-01 14:06

    The best way would be to use an ORM, like Doctrine. It might seem a little too much for smaller type project, but it pays off in a long run.

    It is better to use standard ways of doing things, instead of reinventing your own.

    Here is a list of ORMS from Wikipedia.

    Also you need to evaluate your project, creating project freestyle might not be a very good idea. Other developers will have to learn your code and understand how it works, etc... It is better to use well know frameworks like Zend Framework, Symfony or CakePHP. You can also look into expandable CMS systems like Joomla and Drupal.

    点赞 评论 复制链接分享