从不同的类调用函数

时间:2018-02-28 15:02:18

标签: php

我正在努力解决这个问题,但我不能。我想我错误地调用了这个函数。另外我想知道Custom :: generate($ r1,$ p1,$ a1)与Custom :: generate之间的区别。

有趣的是我在同一个文件中有这个代码$c = $this->install();但功能不同而且它正在工作。我很困惑。请帮助解决此错误

Custom.php:

class Custom {
  private function install() { 
  // code
  }

 public function generate($r1, $p1, $a1) {

 // code
 $c = $this->install();

 }
}

MotherUpdate.php

protected function exeGen() {

$template = Custom::generate($r1, $p1, $a1);

}

我收到了这个错误:

Fatal error: Uncaught Error: Using $this when not in object context in /Users/amin/Custom/Custom.php:12

2 个答案:

答案 0 :(得分:1)

根据我的评论,

generate()不是静态函数。在访问Custom()函数之前,您需要实例化generate()类。

您可以使用:访问静态功能,例如。 Custom::function()

您应该做的是实例化Custom()类,然后调用generate()函数

protected function exeGen() {
//instantiate Custom Class
$custom = new Custom();
$template = $custom->generate($r1, $p1, $a1);    
}

同样在使用静态功能时,您不应在其中使用$this

答案 1 :(得分:1)

你需要这个

class Custom {
    public static function generate($r1, $p1, $a1) {
        // You can't use $this here
    }
}

$template = Custom::generate($r1, $p1, $a1);

或者这个

class Custom {
    public function generate($r1, $p1, $a1) {
        // You can use $this here
    }
}


$custom = new Custom();
$template = $custom->generate($r1, $p1, $a1);