Создан объект А. Внутри него в методе создается объект Б (другого класса). Из объекта Б вызывается метод. Можно ли как нибудь получить переменные объекта А, в методе объекта Б, если они не переданы явно и не являются глобальными?
Если брать ваши входные данные, то нет. Возможно с помощью Reflection
или других хаков, типа приведения объекта к массиву используя SPL, можно получить доступ к свойствам/методам класса вне его контекста, но это плохая практика, использовать ее не советую.
Если свойства объекта А публичные или есть методы, возвращающие их (гетеры), можно передать объект А в объект Б и тогда можно из методов объекта Б получить доступ к свойствам А.
Если передать объект А в объект Б нельзя или у объекта А нет публичных свойств, то доступ получить нельзя. (На самом деле если объект передать можно, но публичных свойств нет, то доступ получить все же можно - через рефлексию, но делать это КРАЙНЕ не желательно. Ну или очень хорошо понимать что и зачем делаете)
Пример
class A {
public $prop;
public function doWork() {
$b = new B();
$b->execute($this);
}
}
class B {
public function execute(A $a) {
echo $a->prop;
}
}
Можно передать в конструктор:
class A {
public function run() {
$obj = new B($params);
}
}
Можно передать в качестве аргумента метода:
class A {
public function run() {
$obj = new B();
$obj->method($params);
}
}
Можно присвоить свойствам класса Б.
class A {
public function run() {
$obj = new B();
$obj->params = $params;
$obj->method();
}
}
class B {
public $params;
public method() {
// TODO $this->params
}
}
Какие существуют виды рекламных бордов и как выбрать подходящий?
Аренда удаленного сервера: цены, провайдеры и условия. Руководство для начинающих
Доброго дня всем По неизвестной причине перестала работать корзинаСайт https://alccosttore
Связался я с vuejs, прочитал кучу отзывов, что это легко и просто иии попал сразу же