[英]How do I make PHP's Magic __set work like a natural variable?
基本上,我想做的是创建一个名为Variables的类,该类使用会话在其中存储所有内容,从而使我可以快速获取和存储需要在整个站点中使用的数据,而无需直接使用会话。
现在,我的代码如下所示:
<?php
class Variables
{
public function __construct()
{
if(session_id() === "")
{
session_start();
}
}
public function __set($name,$value)
{
$_SESSION["Variables"][$name] = $value;
}
public function __get($name)
{
return $_SESSION["Variables"][$name];
}
public function __isset($name)
{
return isset($_SESSION["Variables"][$name]);
}
}
但是,例如,当我尝试像自然变量一样使用它时...
$tpl = new Variables;
$tpl->test[2] = Moo;
echo($tpl->test[2]);
我最终得到“ o”而不是“ Moo”,因为它将测试设置为“ Moo”,完全忽略了数组。 我知道我可以通过解决它
$tpl->test = array("Test","Test","Moo");
echo($tpl->test[2]);
但我希望能够像自然变量一样使用它。 这可能吗?
您将要使__get通过引用返回:
<?php
class Variables
{
public function __construct()
{
if(session_id() === "")
{
session_start();
}
}
public function __set($name,$value)
{
$_SESSION["Variables"][$name] = $value;
}
public function &__get($name)
{
return $_SESSION["Variables"][$name];
}
public function __isset($name)
{
return isset($_SESSION["Variables"][$name]);
}
}
$tpl = new Variables;
$tpl->test[2] = "Moo";
echo($tpl->test[2]);
给出“ Moo”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.