2012-10-28 3 views
0

가능한 중복 :
How to tell whether I’m static or an object?
How can I tell if a function is being called statically in PHP?PHP에서 호출 방식 유형을 어떻게 알 수 있습니까?

이 방법 class::method() 또는 $class->method()가 어떻게에서 방법 호출 된 방법을 알고 이런 식으로 메서드를 호출하면 내가 의미 같은 방법?

+0

ㅎ, 좋은 사람을 찾습니다. 나는 두 개의 가장 새로운 화신을 가장 오래된 것의 사본으로 표시하고있다. –

답변

0

static을 호출하는 동안 non-static 메서드를 함께 사용하면 안되지만 $this이 있으면 메서드 내부에서 확인할 수 있습니다.

$staticcalled = isset($this); 
+3

+1이지만 확인 할 필요가 없습니다. 당신이 말했듯이, 정적 및 비 정적 혼합하지 마십시오. 그것은 수치스러운 PHP조차 그것을 허용합니다. – GolezTrol

+0

@GolezTrol : 그렇지 않습니다. 'function foo ($ bar) {$ bar-> Baz(); }'주어진'$ bar '에 정적'Baz'가 있다는 것을 알게되면, 이것이 효과가 있습니다. 그렇지 않으면 나는 구체적인 유형을 알아야하며 오리 타이핑을 깨뜨릴 수 있습니다. –

+0

"혼합"정적 및 비 정적 방법이 반드시 잘못된 디자인을 나타내는 것은 아닙니다. PHP의 모호한 주장에 따라 정적이거나 정적이 아닌 (E_STRICT를 사용하는) 동일한 메소드를 호출 할 수는 없지만 동일한 이름을 가진 두 개의 별도 메소드를 가질 수는 없다. 하나는 정적이다. 및 기타 비 정적. – lanzz

관련 문제