Какой из них лучше в классе PHP для запроса? - PullRequest
1 голос
/ 19 января 2011

У меня есть класс PHP, который содержит функцию для запроса данных из базы данных. Первый -

class x{

  public $var1;
  public $var2;

  function __construct(){ }

  function getX($primkey){
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'");
    $row = mysq;_fetch_assoc($sql);
    $this->var1 = $row['var1'];
    $this->var2 = $row['var2'];
  }

}

и еще один на

class x{

  public $var1;
  public $var2;

  function __construct(){ }

  function getX($primkey){
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'");
    $row = mysq;_fetch_assoc($sql);
    return $row;
  }

}

два класса имеют некоторую разницу в функции getX () . Первый класс помещает данные из базы данных в переменные класса, а второй возвращает целые данные из базы данных через массив.

Хотелось бы узнать о производительности двух классов, какой из них лучше. а какой из них хорош для программирования или какая-то идея?

Привет.

Ответы [ 3 ]

0 голосов
/ 19 января 2011
class x{

  public $row;

  function __construct(){ }

  function getX($primkey){
    $sql = mysql_qyery("SELECT * FROM x_table WHERE primkey='$primkey'");
    this->$row = mysq;_fetch_assoc($sql);

  }

}

Мое предложение таково. Вы инкапсулированы правильно и динамически соответствуют будущим требованиям.

Возможно, вы также можете добавить функцию получения.

0 голосов
/ 19 января 2011

Я бы создал адаптер базы данных, затем создал бы Data Mapper и работал бы с моделью, которая использует Data Mapper.

В этом случае вызов $ model-> find () вызывает метод find для объектов., который вызывает метод поиска Data Mapper, который выдает запросы к адаптеру базы данных.

0 голосов
/ 19 января 2011

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

Со второй формой, если вы следуете парадигме Convention Over Configuration (CoC) и четко определяете своюусловности, это может сработать.Но, по сути, вы можете столкнуться с ситуациями, когда вам придется делать исключения.Я бы рекомендовал более гибкий подход, описанный выше, в качестве предвидения будущих исключений.

Тангенциальный: если вы не пишете свои собственные сопоставления объектов исключительно для образовательных целей или по какой-либо другой вероятной причине, вы смотрели RedBeanPHP или другие варианты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...