Какие шаблоны базы данных (ORM, DAO, Active Record и т. Д.) Использовать для небольших / средних проектов? - PullRequest
1 голос
/ 01 октября 2010

Я пишу сайт недвижимости с основной функцией выбора и заказа недвижимости.

Это небольшой / простой проект, но я хочу написать его так, так что в будущем я или другие разработчики могут превратить его в приложение для среднего бизнеса, не переписывая его с нуля.

Итак, какие шаблоны вы бы мне посоветовали использовать для работы с базой данных?

Пока у меня есть это:

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 Ответ

5 голосов
/ 01 октября 2010

Лучший способ - использовать ORM, например Doctrine .Это может показаться слишком большим для проектов меньшего типа, но в долгосрочной перспективе оно окупается.

Лучше использовать стандартные способы ведения дел, чем изобретать свои собственные.

Вот список ORMS из Википедии .

Также вам нужно оценить свой проект, создание проекта фристайл может быть не очень хорошей идеей.Другие разработчики должны будут изучить ваш код и понять, как он работает и т. Д. Лучше использовать хорошо известные фреймворки, такие как Zend Framework , Symfony или CakePHP .Вы также можете посмотреть на расширяемые системы CMS, такие как Joomla и Drupal .

...