Передача данных с класса в класс php
Есть два класса hello и world
class hello {
public $data;
public function setup() {
$this->data = 'lorem ipsum';
$world = new world;
$world->data = $this->data
}
}
class world {
public $data;
public function setup() {
echo $this->data;
}
}
Создал экземпляр класса и присвоил данные с переменной в переменную но результат null
Функцию я вызываю в отдельном фале, но данные не передаются в класс world
Что я не так делаю?
Ответы (1 шт):
Данные передаются. Просто вы с ними ничего не делаете. В вашем коде не хватает вызова метода дочернего объекта.
class hello {
public $data;
public function setup() {
$this->data = 'lorem ipsum';
$world = new world;
$world->data = $this->data
$world->setup();
}
}
После выхода из метода hello::setup объект $world перестает существовать, поскольку он находится в области видимости только этой функции.
Чтобы можно было к этому объекту обратиться позже, попробуйте
либо вернуть объект через
return $world;в методеhello::setupи потом дернуть уже его метод setup()$hello = new hello() $world = $hello->setup() $world->setup() // или же все это одной строкой: (new hello())->setup()->setup()либо положить его в какое-нибудь свойство класса
hello. Например, так:class hello { public $data; private $world; public function setup() { $this->data = 'lorem ipsum'; $this->world = new world; $this->world->data = $this->data } public function getWorld() { return $this->world; } } $hello = new hello(); $hello->setup(); $world = $hello->getWorld() $world->setup();
P.S. Огромная просьба! Следуйте рекомендациям PSR-1, именуйте классы в StudlyCaps! В вашем примере это будут имена Hello и World.