Как определить у функции использование переменных конструктора? Да, вопрос новичка, покажите ошибки) Функции, классы сделаны по заданию, т.е. сказано реализовать функцию с приемом переменных, но и конструктор с приемом переменных.. но если я в конструктор вбиваю, зачем потом отдельно функциям передавать? смысл теряется. Как передать те самые переменные, которые передаются в конструктор? попробовал 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();
Чтобы передать переменные конструктору и использовать их в функциях класса, вам необходимо правильно обращаться к свойствам класса без символа "$" перед именем свойства. Также нужно передавать переменные из конструктора в методы 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.
Чтобы передать переменные конструктору и использовать их в функциях класса, вам необходимо правильно обращаться к свойствам класса без символа "$" перед именем свойства. Также нужно передавать переменные из конструктора в методы 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.