duanmin0941 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 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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?



  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址