2010-12-17 7 views
3

Possible Duplicate:
Is it possible to create static classes in PHP (like in C#)?는 클래스 PHP는

에 고정 할 수있는 PHP 클래스는 static으로 선언 할 수있는 경우 중 하나가 말해 줄 수 있습니까?

static class StaticClass 
{ 
    public static function staticMethod() 
    { 
     return 'foo'; 
    } 
} 

나에게 error.parse 오류를주고이 코드 :`기대 구문 분석 오류, T_VARIABLE '

+0

가 아닌 경우 ** 정확한 ** 영업 이익은 강하게 모방 C#을 정적 클래스를 원하는가하지 않는 한 중복 – BoltClock

+0

@BoltClock :.하지만 그룹 [수행 할 수 있습니다 및 모방 C#을] 있도록 [수행 할 수 있습니다]의 하위 집합입니다 질문에 답해 주시면 자세히 설명 드리겠습니다. –

답변

6

아니, 당신은 명시 적으로 정적으로 PHP 클래스를 선언 할 수 없습니다.

생성자를 비공개로 만들면 (적어도 클래스 외부에서) 인스턴스를 만들려고하면 치명적인 오류가 발생합니다.

정적 초기화 및 C# 정적 클래스에있는 다른 기능을 구현하려는 경우 다른 연결된 질문을 참조하십시오. 그렇지 않으면 원하는 모든 유틸리티 메서드를 클래스로 그룹화하는 것뿐입니다. 생성자를 민영화하기 만하면됩니다.

+0

지원해 주셔서 감사합니다. http://stackoverflow.com/questions/468642/is-it-possible-to-create-static-classes-in-c Answer 5 say : PHP에서 정적 클래스를 가질 수 있습니다. 사실입니다. 단지 이것을 알고 싶습니다. Plz ... – Neelesh

+0

@Neelesh : 클래스를 작성하여 정적 클래스 인 것처럼 취급 할 수 있지만 PHP에'static class'를 쓸 수는 없습니다. – BoltClock

+2

@Neelesh : 왼쪽의 눈금을 클릭하여 답변을 수락하십시오. – BoltClock

0

당신은 정적으로 변수와 방법,하지만 클래스를 선언 할 수

static public $stat_sample = 'test'; 

static public getSample() { 
return "test"; 
} 
3

또 다른 대안은 abstract으로 클래스를 만드는 것입니다. 여전히 확장 및 인스턴스화가 가능하지만 직접적으로 그렇게 할 수는 없습니다. 당신이 개인 생성자로 갈 경우

abstract class test { 
    public static function foo() { 
    } 
} 

$foo = new test(); // Fatal error, can't instantiate abstract class 

, 나는 그것이 parent::__construct()를 호출하지 않는 한 (그렇지 않으면 확장 클래스를 재정의 할 수 있습니다 실제로 클래스를 인스턴스화하기 때문에, final 만들어도 좋을 것 :

class test { 
    private final function __construct() {} 
} 
class test2 extends test { 
    public function __construct() {} // fatal error, can't extend final method 
}