2010-12-17 4 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

ない**正確な** OPが強く模倣C#の静的なクラスにしたいんない限り – BoltClock

+0

@BoltClockを複製:。しかしグループ[を行うことができ、模倣C#は] [行うことができます]のサブセットだけで、そのので質問はこれに答えて、それ以上に入ります。 –

答えて

6

いいえ、あなたは明示的にstaticとしてPHPクラスを宣言することはできません期待して、エラーを解析します。

コンストラクタをプライベートにすると、少なくともクラス外からインスタンス化しようとすると致命的なエラーが発生します。

静的初期化やC#静的クラスのその他の機能を実装する場合は、他のリンクされた質問を参照してください。それ以外の場合は、いくつかのユーティリティメソッドをクラスにグループ化するだけであれば、コンストラクタの民営化はそのトリックを行うだけです。

+0

ありがとうございます。これはhttp://stackoverflow.com/questions/468642です。/is-it-possible-to-create-static-classes-in-c-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 
}