2011-12-15 5 views
4

これを達成しようとしています。セッションマネージャクラス、私のフレームワークのために開発したものがあります。私はユニークなセッション鍵を持っている必要がありますので、代わりにこのような何かを行う:静的オブジェクトのマジックメソッド

$_SESSION['foo'] = $bar; 

私はこれを行う:

Session::set('foo',$bar); 

と、設定された機能のようなものでしょう:

$_SESSION[$unique.'foo'] = $bar; 

いいです、それはうまくいきますが、このように使いたいです:

Session['foo'] = $bar 

またはこのような:

Session->foo = $bar 

私が使用傾けることが判明 - 静的オブジェクトに>、そして__setと__getなどのIもカント使用魔法機能。だから、どのように私はこの動作を達成することができますか?

答えて

3

セッションクラスをシングルトンにしますか?その後、

class Session 
{ 
    public static $instance; 

    public static function init() 
    { 
     self::$instance = new Session(); 
    }  

    public function __get($key) 
    { 
     return $_SESSION[$key]; 
    } 
} 

そしてそうのようにそれを使用する:あなたは__callその後、

http://php.net/manual/en/language.oop5.overloading.php

しかしSession['foo'] = $barを使用する必要が

echo(Session::$instance->foo); 
+0

この上の詳細情報 – Pirozek

+0

@Pirozek :)をしてください –

+0

おかげでチームメイトの更新の答えを参照してください、これは私を助け:) – Pirozek

0

を使用することは不可能です。

+0

「のみのオーバーロードプロパティは、オブジェクトコンテキストで動作します。これらの魔法のメソッドは静的なコンテキストで起動されません。」 –

+0

__callStaticを参照する可能性はありますか? – ajreal

+0

@ハサン・カーンおっと、私のせいです。それから彼はあなたが前に言ったようにシングルトンを使わなければなりません。 – Anthony