Как передать переменные в статический метод?

Мне надо передать в метод одну переменную, остальные необходимые для работы у него есть в классе, но он их не видит и говорит 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);
  • Вопрос задан
  • 977 просмотров
Решения вопроса 2
eudj1n
@eudj1n
Вы можете объявить переменные как static:

class MyClass
{
    private static $b = 1;
    private static $c = 2;

    public static function data($a){
        $res = $a + static::$b + static::$c;
        return $res;
    }
}

$res = MyClass::data(25);
Ответ написан
Комментировать
@khrisanfov
Программист
В статических методах не видны не статические члены класса. Если объекта нет, значит и значений нет. Как вариант, передавайте указатель на объект вторым аргументом, а внутри метода используйте $obj->b и $obj->c или сделайте $b и $c тоже статическими если вам так надо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы