2010-08-16 83 views

回答

7

它们是默认的非静态:

public function method() { 

} 

,你会得到E_STRICT如果静态称呼它,但我不认为你可以轻松地执行,它只能在一个实例调用 - 如果您尝试检查 $this我认为您会收到错误消息。 您可以按照Artefacto的说法做isset($this),如果未设置,则会抛出异常。

+6

如果'isset($ this)'为'false',则可以引发异常。 – Artefacto 2010-08-16 17:24:25

+0

这仍然可以被称为静态函数。 – 2010-08-16 17:24:53

+1

@Artefacto您是否看到过在所有非静态方法中明确执行此操作的代码?这看起来很麻烦。希望如果$ this没有设置,你会在方法内部出现某种错误。 – 2010-08-16 17:29:32

1
<?php 
class abc() { 

public function foo() { 
    ... 
} 
} 

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

foo()仍然可以通过abc :: foo()获得。 – 2010-08-16 17:26:17

+0

是的,这是真的。我不知道另一种方式来做到这一点。功能是公共的和面向对象的(意味着这是一种方法) – Aziz 2010-08-16 17:30:01

0
<?php 
class abc() { 

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

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

未经测试。