Как получить переменную из метода, не выполняя код метода?
23.03.2023 07:49:43 am
Привет!
Допустим есть такой метод:
Как можно получить из него переменную
Заранее спасибо.
Допустим есть такой метод:
public function funA() {
foreach ($this->val as $val) {
$this->funB($val)
}
return $this->val;
}
Как можно получить из него переменную
$this->val
, не выполняя код:
foreach ($this->val as $val) {
$this->funB($val)
}
Заранее спасибо.
- Жалоба
23.03.2023 04:41:20 pm
Если получить переменную надо в этом же классе, что находится метод, то так она и получается:
Если надо получать переменную с другого класса, то можно дописать функцию:
И получать переменную так:
$this->val
.Если надо получать переменную с другого класса, то можно дописать функцию:
public function getVal() {
return $this->val;
}
И получать переменную так:
$class->getVal()
. Важно: функция должна быть public
.
23.03.2023 06:05:54 pm
Можно за счет наследие классов (
Пример:
extends
): https://www.php.net/ ... inheritance.php: Наследование — это хорошо зарекомендовавший себя принцип программирования, и PHP использует этот принцип в своей объектной модели. Этот принцип повлияет на то, как многие классы и объекты связаны друг с другом.
Например, при расширении класса дочерний класс наследует все общедоступные и защищённые методы, свойства и константы родительского класса. До тех пор пока эти методы не будут переопределены, они будут сохранять свою исходную функциональность.
Это полезно для определения и абстрагирования функциональности и позволяет реализовать дополнительную функциональность в похожих объектах без необходимости реализовывать всю общую функциональность.
Например, при расширении класса дочерний класс наследует все общедоступные и защищённые методы, свойства и константы родительского класса. До тех пор пока эти методы не будут переопределены, они будут сохранять свою исходную функциональность.
Это полезно для определения и абстрагирования функциональности и позволяет реализовать дополнительную функциональность в похожих объектах без необходимости реализовывать всю общую функциональность.
Пример:
class A {
public $val = 'val';
}
class B extends A {
function __construct() {
echo $this->val;
}
}
23.03.2023 07:34:26 pm
Как вариант: добавить необязательный параметр (
Если надо получить переменную и выполнить весь код метода:
Если надо получить только переменную, не выполняя весь код метода:
$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);