Невозможно вызвать функцию из функции класса, определенной в том же классе - PullRequest
0 голосов
/ 10 января 2019

Я не могу вызвать функцию из функции в классе. Я создал несколько вспомогательных функций, чтобы помочь мне сделать математику с текущим объектом, но я не могу получить доступ к каким-либо функциям, даже если они определены и вызываются в одном классе.

Я пытался использовать: $this->b(); Я также пытался self::b(); из функции a (), но каждый раз получаю одну и ту же ошибку.

Неустранимая ошибка: необученная ошибка: вызов неопределенной функции b ()

class test{
  function a(){
    $a = b();
    return $a;
  }
  function b(){
    return 'testing';
  }
}

когда я вызываю функцию класса, используя:

$obj = new test();
$value = $obj::a();
echo $value;

Я ничего не получаю обратно, но появляется ошибка, сообщающая, что функция не существует.

Мне просто нужно получить доступ к функциям из класса, я не знаю, что еще можно попробовать, это очень легко во многих других языках программирования, чего мне не хватает? Спасибо

1 Ответ

0 голосов
/ 10 января 2019

Чтобы вызвать метод из того же класса, что и вызывающий метод, используйте $this-> Если класс создан, а не статичен, вы также используете ->, а не ::

См. Аннотации для изменений

class test{
  function a(){
    $a = $this->b();        // changed
    return $a;
  }
  function b(){
    return 'testing';
  }
}

$obj = new test();
$value = $obj->a();         // changed
echo $value;

Протестированный результат:

testing

Если вы хотите, чтобы класс был статическим, как это видно из изменения кода, внесенного в ваш вопрос, то это путь

class test{
  static function a(){
    $a = self::b();        
    return $a;
  }
  static function b(){
    return 'testing';
  }
}

//$obj = new test();
//$value = $obj::a();         
$value = test::a();         
echo $value;

Также проверенный результат

testing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...