質問

を使用していマジックゲッター/セッタークラスのための私のセッション変数がいいと通常のgetterおよびsetterか.

コード:

class session
{
    public function __set($name, $value)
    {
        $_SESSION[$name] = $value;
    }

    public function __unset($name)
    {
        unset($_SESSION[$name]);
    }

    public function __get($name)
    {
        if(isset($_SESSION[$name]))
        {
            return $_SESSION[$name];
        }
    }
}

現在このとしていま話 $session->_unset('var_name') の変数も、"魔'についての質問です。

次に私が利用しよう $session->some_var これは動作しません。このセッションを使用した変数 $_SESSION['some_var'].

私の場合の近似式は以下のようになPHPマニュアルの機能は、同じよう。

にしてるわけではありませんので何か間違っているのは、やはありませんもマジックされます。

役に立ちましたか?

解決

まず問題、あなたが呼び出すとき、

unset($session->var_name);

これは

の呼び出しと同じにする必要があります
$session->_unset('var_name');

__get()を使用することができないことについて、何を動作しませんか?何に変数のgetセットを行い、どのような警告が与えられています。あなたは error_reporting() をE_ALLに。

を設定していることを確認

また、あなたが session_start

他のヒント

私はゲッターとセッターは、クラス内の変数のためにと思っていた?

class SomeClass {
    private $someProperty;

    function __get($name) {
        if($name == 'someProperty') return $this->someProperty;
    }

    function __set($name, $value) {
        if($name == 'someProperty') $this->someProperty = $value;

    }
}


$someClass = new SomeClass();
$someClass->someProperty = 'value';
echo $someClass->someProperty;

class session { /* ...as posted in the question ... */ }

session_start();
$s = new session;
$s->foo = 123;
$s->bar = 456;
print_r($_SESSION);

unset($s->bar);
print_r($_SESSION);

プリント

Array
(
    [foo] => 123
    [bar] => 456
)
Array
(
    [foo] => 123
)

[OK]を、そうでないかもしれない "魔法"。しかし、意図したとおりに動作します。
それはあなたが望むものではない場合...

を詳しく説明してください

これが私の理解で約マジック機能

題がある可能性がありますをつくって、そこから生まれる...

$セッションである配列 なオブジェクト そのためにアクセスできて使$セッション[実行]しな$セッション->分野

マジック機能が利用できるようになりますの機能の名前__fnName前に他の機能 として

fnNameNewField($value);

で分かれNewFieldとしてキーが送られる__fnNameとoprationsます

例:setNewId($価値)を送付さ__set()鍵=new_idおよびパラメータ...

scroll top