PHP: Не удается передать переменную внутри класса, почему она может не проходит в функцию класса?

уважаемые эксперты!

Есть такой класс:

class Downloader
{
    public $source_html, $dom;
    
    function __construct($source_html, $dom)
    {
    /*  
        $this->source_link = $source_link; 
    */
        $this->source_html = $source_html;
    
        $this->dom = $dom;
         /*
        $this->xpath = $xpath;
        
        $this->open_config = $open_config;
    */      
//      $this->archives_names = $archives_names;
    }

    public function getInfFromTheSource ($open_config)
    {
        
        $source_link = $open_config->InfSource;
        
        $source_html = file_get_contents($source_link);
                        
        return($source_html);
        
    }
    
    public function selectWhatIsNeeded ($source_html) 
    {
        
        $dom = new DOMDocument();
    
        $dom->loadHTML($source_html);
    
        $xpath = new DOMXpath($dom);
    
        $archives_names = $xpath->query('');

        return($archives_names);
                    
    }

    public function downloadInFolder($open_config, $archives_names)
    {
        
        print_r($archives_names);
}
}

Экземпляры классов и вызовы методов создаю так:

require_once 'Downloader.php';

$open_config = json_decode(file_get_contents('config.json', true));

$obj = new Downloader($open_config);

$obj->selectWhatIsNeeded($obj->getInfFromTheSource ($open_config));

$obj->downloadInFolder($open_config, $archives_names);

Почему не срабатывает функция downloadInFolder()? В функции selectWhatIsNeeded() успешно наполняется переменная $archives_names, но если выводить в selectWhatIsNeeded(): print_r($archives_names); , то результат: пустой экран браузера.. Буду благодарен за любой совет!


Ответы (1 шт):

Автор решения: Sanya H
require_once 'Downloader.php';

$open_config = json_decode(file_get_contents('config.json', true));

$obj = new Downloader($open_config);

$archives_names = $obj->selectWhatIsNeeded($obj->getInfFromTheSource ($open_config));

$obj->downloadInFolder($open_config, $archives_names);

Но у Вас это не должно работать, т.к. конструктор требует 2 параметра, а передается один. Также непонятно зачем постоянно передавать конфиг, если он уже сохранен в свойствах класса

→ Ссылка