Мне нужна помощь, чтобы избежать дублирования кода (дважды скопируйте код вставки)

Я пытаюсь постоянно совершенствовать свои навыки программирования, я все узнал онлайн. Но я не могу найти способ избежать дублирования кода. Вот мой код:

public function Curl($page, $check_top = 0, $pages = 1, $pagesources = array()){
//$page is the URL
//$check_top 0 = false 1 = true. When true it needs to check both false & true
//$pages is the amount of pages it needs to check.

$agent = "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0";

try{
for($i = 0; $i < $pages; $i++){
$count = $i * 25; //Page 1 starts at 0, page 2 at 25 etc..
$ch = curl_init($page . "/?count=" . $count);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$pagesource = curl_exec($ch);
$pagesources[] = $pagesource;
}

if($check_top == 1){
for($i = 0; $i < $pages; $i++){
$count = $i * 25;
$ch = curl_init($page . "/top/?sort=top&t=all&count=" . $count);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$pagesource = curl_exec($ch);
$pagesources[] = $pagesource;
}
}

}  catch (Exception $e){
echo $e->getMessage();
}
return $pagesources;

}

Что я пытаюсь сделать:
Я хочу получить источники страниц HTML из определенного диапазона страниц (например, от 1 до 5 страниц). Есть главные страницы и стандартные страницы, из которых я хочу получить источники с диапазоном страниц. Так что мой код работает нормально, но очевидно; должен быть лучший способ.

-1

Решение

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

class A
{
public function methodA($paramA, $paramB, $paramC)
{
if ($paramA == 'A') {
$result = $this->methodB($paramB);
} else {
$result = $this->methodB($paramC);
}

return $result;
}

public function methodB($paramA)
{
// do something with the given param and return the result
}
}

$classA = new Class();
$result = $classA->methodA('foo', 'bar', 'baz');

Код, приведенный выше, показывает простой класс с двумя методами. Как вы объявили свою функцию Curl в вашем публичном примере, я полагаю, вы используете класс. Класс в приведенном выше примере очень прост. Вызывает метод methodB с разными параметрами в nethodA метод класса.

Что это значит для вас? Вы должны выяснить, какие параметры нужны вашей вспомогательной функции. Если вы выяснили, какие параметры ему нужны, просто напишите другой метод класса, который выполняет функции curl с заданными параметрами. Просто как пирог.

Если вы новичок в использовании классов и методов с php, я предлагаю прочитать документацию, где описаны основные функции классов, методов и членов: http://php.net/manual/en/classobj.examples.php.

1

Другие решения

Других решений пока нет …