ООП метод php - передать переменные или получить изнутри объекта - PullRequest
1 голос
/ 29 ноября 2011

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

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

 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';

}

OR

 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';

}

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Если экземпляр этого класса предназначен для одного продукта, тогда используйте первый метод, поскольку не было бы никакой причины передавать его в качестве параметров, если они заданы при создании класса.

В противном случае, если это больше, чем на продукт, то второй метод будет вашим лучшим выбором. Поскольку вам не нужно будет вызывать и устанавливать методы для skID и prodID каждый раз, когда вам нужно получить URL продукта.

0 голосов
/ 29 ноября 2011

Я буду с первым. Я всегда разрабатываю свое приложение, пытаясь использовать меньше static methods, которое я могу, и всегда использую attributes, избегая отправки их по function parameters.

0 голосов
/ 29 ноября 2011

Зависит от того, что если вы планируете предоставить моделям некоторую функциональность, например, сделать их немного похожими на активные записи, вы можете поместить функциональность в класс и использовать его члены. Кроме того, у вас есть веская причина использовать статические функции? Если вы хотите применить ООП, вы должны возложить ответственность на значимые классы, модель не должна одновременно получать данные и выполнять перенаправление.

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