2010-08-16 3 views

답변

7

그들은 기본적으로 비 정적 : 정적으로 호출하는 경우

public function method() { 

} 

당신은 E_STRICT을 얻을 것이다,하지만 난 당신이 쉽게에만 인스턴스에서 호출 될 수 있음을 시행 할 수 있다고 생각하지 않습니다 - 체크하려고한다면 $this 오류가 발생한다고 생각합니다. Artefacto가 말한대로 isset($this)을 할 수 있으며 설정되지 않은 경우 예외를 throw합니다.

+6

'isset ($ this)'가'false'이면 예외를 던질 수 있습니다. – Artefacto

+0

이것은 여전히 ​​정적 함수로 호출 될 수 있습니다. –

+1

@Artefacto 비 정적 메서드에서 명시 적으로 이렇게하는 코드를 보았습니까? 그것은 성가신 것처럼 보입니다. $ this가 설정되지 않은 경우 메서드 내부에 일종의 오류가 발생하기를 바랍니다. –

1
<?php 
class abc() { 

public function foo() { 
    ... 
} 
} 

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

foo()는 여전히 abc :: foo()를 통해 사용할 수 있습니다. –

+0

네, 맞습니다. 나는 그것을 할 수있는 다른 방법을 모른다. 함수는 public과 object oriented입니다. – Aziz

0
<?php 
class abc() { 

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

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

는 테스트하지 않습니다.

관련 문제