DANFA

Как получить переменную из метода, не выполняя код метода?

PHP
Привет!
Допустим есть такой метод:
	public function funA() {
		foreach ($this->val as $val) {
			$this->funB($val)
		}

		return $this->val;
	}

Как можно получить из него переменную $this->val, не выполняя код:
		foreach ($this->val as $val) {
			$this->funB($val)
		}

Заранее спасибо.
Если получить переменную надо в этом же классе, что находится метод, то так она и получается: $this->val.

Если надо получать переменную с другого класса, то можно дописать функцию:
	public function getVal() {
		return $this->val;
	}

И получать переменную так: $class->getVal(). Важно: функция должна быть public.
Можно за счет наследие классов (extends): https://www.php.net/ ... inheritance.php:
Наследование — это хорошо зарекомендовавший себя принцип программирования, и PHP использует этот принцип в своей объектной модели. Этот принцип повлияет на то, как многие классы и объекты связаны друг с другом.

Например, при расширении класса дочерний класс наследует все общедоступные и защищённые методы, свойства и константы родительского класса. До тех пор пока эти методы не будут переопределены, они будут сохранять свою исходную функциональность.

Это полезно для определения и абстрагирования функциональности и позволяет реализовать дополнительную функциональность в похожих объектах без необходимости реализовывать всю общую функциональность.

Пример:
class A {
	public $val = 'val';
}

class B extends A {
	function __construct() {
		echo $this->val;
	}
}
Как вариант: добавить необязательный параметр ($onlyVal), который по умолчанию будет false. При запуске метода, с параметром true, метод будет возвращать свойство, без выполнения кода:
	public function funA($onlyVal = false) {
		if ($onlyVal) {
			return $this->val;
		}

		foreach ($this->val as $val) {
			$this->funB($val)
		}

		return $this->val;
	}

Если надо получить переменную и выполнить весь код метода:
$val = $className->funA();

Если надо получить только переменную, не выполняя весь код метода:
$val = $className->funA(true);
Если использовать наследие, то придется дописывать extends в каждый файл, где нужно получить переменную, мне кажется, что это неразумно.

Понравилась идея с функцией:
	public function getVal() {
		return $this->val;
	}

Спасибо! Вопрос решен.