какой метод более эффективен: установите свойство класса; или вернуть результат? - PullRequest
0 голосов
/ 16 февраля 2010

Пожалуйста, рассмотрите этот пример. (PHP)

class Database{  
    private $result;  
    private $conn;

    function query($sql){  
        $result = $this->conn->query($sql);  
        // Set the Database::$result ?? Or return the value and avoid setting property?  
        return $result;
        // $this->result = $result;  
    }  
}

Каковы преимущества обоих этих методов? Где они применимы?

Ответы [ 4 ]

1 голос
/ 16 февраля 2010

Основываясь на вашем коде, я думаю, что имеет смысл возвращать результат, а не устанавливать его как свойство класса базы данных. База данных (как бы соединение) будет иметь несколько результирующих наборов в течение срока ее службы. Поэтому установка результата в качестве свойства класса не имеет смысла, если вы собираетесь делать несколько запросов, используя один и тот же объект.

0 голосов
/ 20 февраля 2010

Я не думаю, что свойство принадлежит Database, поэтому сделайте одно из следующего:

  1. вернуть запрос как есть
  2. возвращает значение QueryObject, которое уже задано в вашем запросе, но дает вам дополнительные методы для обработки результата запроса (например, разбиение на страницы, фильтрация)
0 голосов
/ 20 февраля 2010

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

Кроме того, поскольку вы сохраняете только один набор результатов, вы можете переименовать свой класс в нечто более описательное. «База данных» не совсем резюмирует это. Это «ResultSet». Если это определенный тип набора результатов, подумайте над тем, чтобы назвать его, чтобы он отражал тип данных, которые вы выбираете.

0 голосов
/ 16 февраля 2010

Для лучшей структуры класса я бы посоветовал вам взглянуть на:

Внедрение зависимостей PHP

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

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