い、魔法のgetterおよびsetterか
-
24-09-2019 - |
質問
を使用していマジックゲッター/セッタークラスのための私のセッション変数がいいと通常の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に。
他のヒント
私はゲッターとセッターは、クラス内の変数のためにと思っていた?
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およびパラメータ...