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 шт):
Я думал, это как с функцией. При 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){}
}
Таким образом, эти два фрагмента кода эквивалентны. Код становится короче, правда, появляется вопрос о наглядности. Ибо по сути не все члены класса перечислены в его декларации, так что, честно сказать, нововведение несколько спорное.