Как определить у функции использование переменных конструктора? Да, вопрос новичка, покажите ошибки)
Функции, классы сделаны по заданию, т.е. сказано реализовать функцию с приемом переменных, но и конструктор с приемом переменных.. но если я в конструктор вбиваю, зачем потом отдельно функциям передавать? смысл теряется. Как передать те самые переменные, которые передаются в конструктор?
попробовал use __construct - выдало синтаксическую ошибку мол unexpected use, попробовал передать exp1(&$a, &$b, &$c) ноль реакции.. Попробовал объявить public $a, $b, $c и в F1 и в абстрактном, думал может объявлять обязательно надо, но не помогло тоже.
Заранее спасибо)Abstract class BaseMath
{
protected function exp1($a, $b, $c)
{
return $this->$a*pow($this->$b,$this->$c);
}
protected function exp2($a, $b, $c)
{
return pow(($this->$a/$this->$b),$this->$c);
}
protected abstract static function getValue();
}
Class F1 extends BaseMath
{
public function __construct($a, $b, $c)
{
$this->$a = $a;
$this->$b = $b;
$this->$c = $c;
}
public static function getValue()
{
$f = $a*pow($b, $c)+pow(((pow(($a/$c), $b))%3), min($a,$b,$c));
echo $f;
return true;
}
}
$func = new F1(4,7,12);
$funk->exp1();
$funk->exp2();
$funk::getValue();

21 Авг 2019 в 06:58
211 +1
1
Ответы
1

Чтобы передать переменные конструктору и использовать их в функциях класса, вам необходимо правильно обращаться к свойствам класса без символа "$" перед именем свойства. Также нужно передавать переменные из конструктора в методы exp1 и exp2.

Вот исправленный код:

Abstract class BaseMath
{
protected $a;
protected $b;
protected $c;
protected function exp1()
{
return $this->a * pow($this->b, $this->c);
}
protected function exp2()
{
return pow(($this->a / $this->b), $this->c);
}
protected abstract static function getValue();
}
Class F1 extends BaseMath
{
public function __construct($a, $b, $c)
{
$this->a = $a;
$this->b = $b;
$this->c = $c;
}
public static function getValue()
{
$f = $this->a * pow($this->b, $this->c) + pow(((pow(($this->a / $this->c), $this->b) % 3), min($this->a, $this->b, $this->c));
echo $f;
return true;
}
}
$func = new F1(4, 7, 12);
$func->exp1();
$func->exp2();
$func::getValue();

Теперь переменные $a, $b, $c будут корректно передаваться в конструктор и использоваться в методах exp1 и exp2.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир