Зависимость полей базы данных - PullRequest
0 голосов
/ 13 апреля 2011

В настоящее время у меня есть этот метод:

public function getUser($id) {
    $user = $this->db->getSingleRecord("SELECT user_id,  user_login, user_email FROM users WHERE user_id = ?", $id);

    return $user;
}

Я думаю, что это довольно очевидно.$ user - это ассоциативный массив, поэтому будут существовать $ user ['user_id'], $ user ['user_login'] и $ user ['user_email'].Это будет передано в шаблон Smarty, и в этом файле будут использованы следующие ключи:

login: {$user['user_login']|escape} <br />

Это заставило меня задуматься ... это нормально?Если поле базы данных изменится, мне нужно будет отредактировать 2 файла.Я мог бы изменить метод на что-то вроде этого:

public function getUser($id) {
    $user = $this->db->getSingleRecord("SELECT user_id,  user_login, user_email FROM users WHERE user_id = ?", $id);

    if (empty($user))
      // return empty array
      return $user;
    else
      return array('user_id' => $user['user_id'], 'user_login' => $user['user_login'], 'user_email' => $user['user_email']);
}

Если поле базы данных изменится, мне нужно будет отредактировать только один файл (этот метод) сейчас.Сначала я подумал, что такой подход намного лучше.

С другой стороны, стоит ли вам действительно позаботиться об этих вещах?Обычно вы не меняете эти поля.

Каков наилучший подход для этого?

Спасибо

1 Ответ

1 голос
/ 13 апреля 2011

Рассмотрим соответствие полей базы данных и $user структуры, требуемой шаблоном, совпадением. Используйте тот, который вы используете в настоящее время. Если схема базы данных изменится, переключитесь на альтернативную (вам все равно придется изменить метод, чтобы изменить запрос).

...