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

时间:2010-10-01 13:32:41

标签: php orm design-patterns dao

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

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

那么您可以建议我使用哪种模式来处理数据库?

现在我有了这个:

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();

    // ...

1 个答案:

答案 0 :(得分:5)

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

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

这是list of ORMS from Wikipedia

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