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

hjd*_*jdm 1 php orm dao design-patterns

我写的房地产网站具有选择和订购房地产的基本功能.

这是一个小型/简单的项目,但我想以方式编写,所以将来我或其他开发人员可以将其转换为中型企业应用程序而无需从头开始重写.

那么你可以建议我用什么样的模式来处理数据库?

现在我有这个:

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
    $stmt->execute($params);
    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();

    // ...
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 5

最好的方法是使用ORM,比如Doctrine.对于较小型的项目来说,这似乎有点过分,但从长远来看,它会得到回报.

最好使用标准的做事方式,而不是重新发明自己的方式.

以下是维基百科的ORMS列表.

您还需要评估您的项目,创建项目自由式可能不是一个好主意.其他开发人员将不得不学习您的代码并了解它的工作原理等等...最好使用知名的框架,如Zend Framework,SymfonyCakePHP.您还可以查看可扩展的CMS系统,如JoomlaDrupal.