Как передать переменные в статический метод? Мне надо передать в метод одну переменную, остальные необходимые для работы у него есть в классе, но он их не видит и говорит Undefined variable про b и c Как лучше сделать в этом случае? Поместить их внутрь метода прямо? А вдруг они понадобятся в другом методе класса?class MyClass { private $b = 1; private $c = 2;
public static function data($a, $b, $c){ $res = $a + $b + $c; return $res; } } $res = MyClass::data(25);
Если вам необходимо передать только одну переменную в статический метод, а остальные переменные уже есть в классе, можно изменить метод таким образом:
class MyClass { private $b = 1; private $c = 2; public static function data($a){ $instance = new self(); // создаем объект класса $res = $a + $instance->b + $instance->c; // обращаемся к переменным через объект return $res; } } $res = MyClass::data(25);
Таким образом, вы создаете объект класса внутри статического метода и обращаетесь к переменным $b и $c через этот объект.
Если в будущем вам понадобится использовать переменные $b и $c в других методах класса, вы можете выбрать другое решение, например, передавать эти переменные в качестве аргументов каждому методу, либо создавать объект класса в контексте, где вам нужны эти переменные.
Если вам необходимо передать только одну переменную в статический метод, а остальные переменные уже есть в классе, можно изменить метод таким образом:
class MyClass{
private $b = 1;
private $c = 2;
public static function data($a){
$instance = new self(); // создаем объект класса
$res = $a + $instance->b + $instance->c; // обращаемся к переменным через объект
return $res;
}
}
$res = MyClass::data(25);
Таким образом, вы создаете объект класса внутри статического метода и обращаетесь к переменным $b и $c через этот объект.
Если в будущем вам понадобится использовать переменные $b и $c в других методах класса, вы можете выбрать другое решение, например, передавать эти переменные в качестве аргументов каждому методу, либо создавать объект класса в контексте, где вам нужны эти переменные.