Все еще изучаю программирование ООП, но я тестирую с proxy-scraper
Вот мой test.php
скрипт, который я ищу, чтобы вернуть переменную из класса во внешний phpfile:
<?php
use GuzzleHttp\Client as GuzzleClient;
use Vantoozz\ProxyScraper\HttpClient\GuzzleHttpClient;
use Vantoozz\ProxyScraper\Scrapers;
$scraper = new Scrapers\HideMyIpScraper($httpClient);
foreach ($scraper->get() as $proxy2) {
$proxyexplode = explode(':', $proxy2);
$ipv4proxy = (string)$proxyexplode [0];
$portproxy = (int)$proxyexplode [1];
$proxy = new Proxy(new Ipv4($ipv4proxy), new Port($portproxy));
}
Теперь это взаимодействует с файлом на моем локальном хосте Scrapers/HideMyIpScraper.php
.Весь файл php можно посмотреть здесь
Всякий раз, когда в моем цикле foreach запускается $proxy
, это называется:
/**
* @return \Generator|Proxy[]
* @throws \Vantoozz\ProxyScraper\Exceptions\ScraperException
*/
public function get(): \Generator
{
try {
$html = $this->httpClient->get($this->makeUrl());
} catch (HttpClientException $e) {
throw new ScraperException($e->getMessage(), $e->getCode(), $e);
}
foreach ($this->extractData($html) as $item) {
$countrycode = $item['c']['f'];
var_dump($countrycode);
if (!\is_array($item)) {
continue;
}
try {
yield $this->makeProxy($item);
} catch (InvalidArgumentException $e) {
continue;
}
}
}
Единственное, что я добавил ввыше было $countrycode = $item['c']['f'];
Я пытаюсь получить это значение в моем test.php
в цикле foreach
, так что это примерно так:
$array = array();
foreach ($scraper->get() as $proxy2) {
$proxy = new Proxy(new Ipv4($ipv4proxy), new Port($portproxy));
// $countrycode is var_dumped here from `HideMyIpScraper.php`
if ($countrycode == 'us') {
$array[] = $proxy2;
}
Ноконечно $countrycode
находится во внешней функции в другом php-файле, поэтому это неверно и выдает ошибку.
Я пробовал что-то вроде return $countrycode
, но это прерывает цикл foreach ($this->extractData($html) as $item) {
послепервая итерация.
Как получить переменную $countrycode
в моем скрипте test.php
для условной логики?