Почему код возвращает значение лишь единожды? Почему возвращает значение всего один раз? И дайте оценку коду - где чего не хватает или что-то лишнее? Возможно, можно было написать проще?url = $url;
}
public function parseIt() {
$content = file_get_contents($this->url);
preg_match("~url, PHP_URL_HOST);
return $gotHost;
}
}
$parser = new parser('http://vk.com/id1');
echo $parser->parseIt();
?>

21 Авг 2019 в 07:09
242 +1
1
Ответы
1

Код возвращает значение лишь один раз, потому что после первого вызова метода parseIt() свойство $parsed класса parser уже заполнено, и при последующих вызовах parseIt() результат остается тем же.

Оценка кода:

В методе parseIt() нет обработки случая, когда не удается найти нужный контент в странице.Метод getHost() не используется в данном коде, поэтому лишний.Класс parser не имеет проверки на существование файла перед его чтением функцией file_get_contents.

Проще можно было написать следующим образом:

class Parser {
protected $url;
public function __construct($url) {
$this->url = $url;
}
public function parseAndReturnImgSrc() {
$content = file_get_contents($this->url);
if (preg_match("~<img src=\"(.*)\"~Uis", $content, $parsed)) {
return $parsed[1];
} else {
return "Image source not found";
}
}
}
$parser = new Parser('http://vk.com/id1');
echo $parser->parseAndReturnImgSrc();

Если требуется работать с хостом, можно добавить метод в класс Parser:

public function getHost() {
return parse_url($this->url, PHP_URL_HOST);
}

Обратите внимание на изменения в названии класса (camelCase) и исправления в методе parseAndReturnImgSrc().

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир