无法从同一类中定义的类函数中调用函数

时间:2019-01-10 18:37:37

标签: php oop

我似乎无法从类中的函数调用函数。我创建了一些辅助函数来帮助我对当前对象进行数学运算,但是即使在同一个类中定义和调用它们,我也似乎无法访问任何函数。

我尝试使用:$this->b();我也曾尝试过a()函数中的self::b();,但每次都遇到相同的错误。

  

致命错误:未捕获错误:调用未定义函数b()

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

当我使用以下方法调用类函数时:

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

我什么也没收到,但报错说该功能不存在。

我只需要从一个类中访问函数,我不知道在其他许多编程语言中尝试这种方法也很容易,我还缺少什么?谢谢

1 个答案:

答案 0 :(得分:0)

要使用与调用方法相同的类来调用方法,请使用$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