如何在php中将非静态方法调用为静态方法?

时间:2015-03-24 11:37:06

标签: php behat

我完全不熟悉PHP。我做了一件事:

 class Foo  
 {         
    @BeforeSuite
    public static function prePare()
   {           
       $obj = new Foo;
       $obj->iVisit("https://google.com");
     }
  }

 public function iVisit($url)
   {
      if ($url != null) {
            $this -> getSession() -> visit($url);
         }
      else {
           throw new PendingException();
         }
   }
}

但它抛出了这个错误:

  

PHP致命错误:在非对象

上调用成员函数getSession()

编辑:

我的方案是在其他测试用例开始运行之前加载URL。所以我选择在@beforesuite函数中加载url,但在behat中,@beforesuite是一个静态函数。我不得不从静态函数调用iVisit方法。

这个问题还有其他解决办法吗?

1 个答案:

答案 0 :(得分:2)

它不是一个php概念,它只是一个编程概念。

您不能在任何地方调用非静态方法,只是因为您需要创建实例(或引用已经存在的实例 )该调用该函数。