如何在PHP中将方法声明为公共但非静态?

时间:2010-08-16 17:21:47

标签: php oop

问题在于标题。

3 个答案:

答案 0 :(得分:7)

默认情况下它们是非静态的:

public function method() {

}

如果您静态调用它,您将获得E_STRICT,但我认为您不能轻易强制它只能在实例上调用 - 如果您尝试检查{{1}我认为你会收到一个错误。你可以按照Artefacto的说法做$this,如果没有设置就抛出异常。

答案 1 :(得分:1)

<?php
class abc() {

 public function foo() {
     ...
 }
}

$c = new abc();
$c->foo();
?>

答案 2 :(得分:0)

<?php
class abc() {

 public function foo() {
     if (!isset($this)) {
         throw new Exception('Method is non-static.');
         exit();
     }
 }
}

$c = new abc();
$c->foo();
?>

未经测试。