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