Метод ООП в PHP - параметров передать или получить от внутри объекта


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

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

public function getProductURLstart(){  
    $select = "SELECT l.URL, p.id FROM logins AS l
        INNER JOIN Pages AS p ON l.id = p.clientID 
        WHERE l.id = '$this->skID' AND p.productPage = 1";

    $res = mssql_query($select);
    $r = mssql_fetch_row($res);     

    $url = trim($r[0]); 
    $page_id = $r[1];

    return  $url .'/index.aspx?pageID='. $page_id . '&prodID=$this->prodID';
}

Или

static function getProductURLstart($skID, $prodId){    
    $select = "SELECT l.URL, p.id FROM logins AS l
        INNER JOIN Pages AS p ON l.id = p.clientID 
        WHERE l.id = '$skID' AND p.productPage = 1";

    $res = mssql_query($select);
    $r = mssql_fetch_row($res);     

    $url = trim($r[0]); 
    $page_id = $r[1];

    return  $url .'/index.aspx?pageID='. $page_id . '&prodID=$prodId';
}


1244
3
задан 29 ноября 2011 в 03:11 Источник Поделиться
Комментарии
1 ответ

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

Некоторые другие заметки:


  1. Это действительно трудно читать код, который содержит один символ длинные имена переменных:

    $r = mssql_fetch_row($res);

    Вы должны расшифровать их. Я бы переименовать его в $строки. То же верно для SQL-запросов: Логинов, как я. Я бы его Логинов.


  2. Во втором варианте есть три переменных именования: $скида, $продукта, $товары. Старайтесь быть последовательным и использовать только одну из них: они должны быть $занос, $код продукта, $pageId или $скида, $код продукта, $pageID или $sk_id, $prod_id, $товары. (Я думаю, во-первых, верблюжьего версия-самый читаемый.)

  3. Нет обработки ошибок в коде. Что происходит, когда запрос возвращает пустой результат?

  4. Вероятно, код уязвим к SQL-инъекции: http://en.wikipedia.org/wiki/SQL_injection

  5. Попробуйте получить доступ к атрибутам базы данных с ключами не числовые индексы.

    $url = trim($r[0]); 
    $page_id = $r[1];

    Следующий будет более читабельным:

    $url = trim($r["url"]); 
    $page_id = $r["id"];

1
ответ дан 29 ноября 2011 в 09:11 Источник Поделиться