기본적으로 세션을 사용하여 직접 작업하지 않고도 전체 사이트에서 사용해야하는 데이터를 신속하게 가져오고 저장할 수 있도록 세션을 사용하여 세션을 사용하는 Variables라는 클래스를 만듭니다.PHP의 Magic __set 작업을 자연스러운 변수로 만들려면 어떻게해야합니까?
는는 지금, 내 코드는 다음과 같습니다 :
그러나<?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"대신 "o"를 사용하여 테스트를 "Moo"로 설정하므로 배열을 완전히 무시합니다. 나는 그걸로 해결할 수 있다는 것을 알고있다.
$tpl->test = array("Test","Test","Moo");
echo($tpl->test[2]);
그러나 나는 그것이 자연의 변수 인 것처럼 그것을 사용할 수 있기를 바란다. 이것이 가능한가?
$ _SESSION 변수를 직접 사용할 수도 있습니다. 어쨌든, 나는 그것을 얻지 못하고있다. $ tpl-> test [2] = Moo 란 무엇입니까? 하기로되어있다? Moo는 일정합니까? 문자열 인 경우 따옴표가 없습니다. – Artefacto
무엇이 요점입니까? $ _SESSION은 이미 변수입니다 ... – nico
@nico 미래에서 말하면, 이것은 의존성 주입과 단순한 추상화 같은 것들에 아주 좋습니다. 어떤 사람들은 Session을 객체 또는 싱글 톤으로 사용하는 것을 선호 할 수도 있습니다. – Navarr