2011-01-19 2 views
1

У меня есть класс PHP, который содержит функцию для данных запроса из базы данных. ПервыйКакой из них лучше для класса 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(). Первый класс помещает данные из базы данных в переменные класса, а второй возвращает целые данные из базы данных через массив.

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

С уважением.

ответ

0

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

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

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

0
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

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

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

Смежные вопросы