这是一个小型/简单的项目,但我想用它来写, 因此,将来我或其他开发人员可以将其转换为中型企业应用程序,而无需重写它 从头开始。
那么您可以建议我使用哪种模式来处理数据库?
现在我有了这个:
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();
// ...
答案 0 :(得分:5)
最好的方法是使用ORM,例如Doctrine。对于较小型的项目来说,这似乎有些过分,但从长远来看,它会得到回报。
最好使用标准的做事方式,而不是重新发明自己的方式。
这是list of ORMS from Wikipedia。
此外,您需要评估您的项目,创建项目自由式可能不是一个好主意。其他开发人员必须学习您的代码并了解其工作原理等等...最好使用知名的框架,如Zend Framework,Symfony或CakePHP。您还可以查看可扩展的CMS系统,例如Joomla和Drupal。