[英]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.