PHP: как результат работы одного класса передать в другой?

Только начинаю осваивать ООП. Программа у меня делится на несколько классов, экземпляры которых я вызываю в index.php:

require_once('Parser.php');

require_once('Controller.php')

$obj = new Parser();

$obj->getMyInformation();

$obj2 = new Controller();

$obj2->putInformationInTables();

Я хочу, чтобы "выходы" одного класса служили "входными данными" для обработки в другом. Так, как мне лучше передать информацию из класса Parser() в класс Controller()?

Может быть, самый оптимальный способ через аргументы классов? Попробовал так:

$obj2 = new Controller(30);

$obj2 = new Controller(40);

Но значения 30 и 40 не присваиваются никаким переменным внутри класса Controller().

Прочитал, что для этого используются статические переменные, конструктор... Но написано непонятно... Не смог повторить это у себя в коде... Подскажите, пожалуйста, как такие вещи правильно делаются?

Непонятно, как заставить экземпляры классов и классы координироваться...


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

Автор решения: teran

Я думал, это как с функцией. При Controller(40), значение 40 будет присвоено первой переменной в class Controller () { public $a, $b}

само по себе ничего никуда не запишется. создание нового экземпляра класса new Classname() - это вызов функции-конструктора с указанными аргументами. Классический путь:

class Test {
    public $a;
    public __construct($a){
        $this->a = $a
    }
}

То есть вы объявляете класс, описываете переменные-члены класса. Описываете параметры конструктора, явно берете эти параметры и сохраняете значения.

В пхп 8 появился некий "синтаксический сахар", где эту рутинную операцию можно сократить до

 class Test {
     public __construct(public $a){}
 }

Таким образом, эти два фрагмента кода эквивалентны. Код становится короче, правда, появляется вопрос о наглядности. Ибо по сути не все члены класса перечислены в его декларации, так что, честно сказать, нововведение несколько спорное.

→ Ссылка