我正在为我的框架开发一个简单的会话管理器。我试图为会话数据设置一个更加用户友好的结构。本质上,我的会话是这样存储的:
$app_name = "Some_App_Name";
$component = "notifications";
$key = "errors";
$value = "There was some error";
$_SESSION[$app_name][$component][$key] = $value;
我面临的问题是通过会话类中的参数创建此结构。我有一个set方法,理想情况下应该设置一个会话值。上面列出的$ app_name默认情况下是通过构造函数添加到会话类的,但是我需要找到一种简单的方法来获取在方法中传递的参数,然后创建其余的参数。一个简单的例子:
// Where keys could be: $key1 = notifications, $key2 => "notices"
public static function set($key1,$key2,$value) {
$_SESSION[self::$app_name][$key1][$key2] = $value;
}
如果我总是有4个参数,以上方法将起作用,但在某些情况下,我可能只有2个参数。我可以传递2个参数(都是数组),但我正在寻找一种更简化的方法(如果存在这样的方法)。
通过创建结构和设置值,我还需要一种类似的方法来验证值或最后一个键是否存在:
// Where keys could be: $key1 = notifications, $key2 => "errors"
public static function exists($key1,$key2) {
if(isset($_SESSION[self::$app_name][$key1][$key2])) {
return true;
}
任何建议将不胜感激。
鉴于要协助其他想要做类似事情的成员,我强烈建议您不要使用此概念,因为这听起来似乎是个好主意,但您真正的问题在于数组本身的管理。直接与$ _SESSION超全局变量一起工作确实是更强大的选择,因为:
即使有了用于服务器和组件的参数($ _SESSION ['somename'] ['auth']),当您想从对象的另一个实例访问该级别的内容时会发生什么?假设我还有一个$ _SESSION ['somename'] ['errors']的会话对象实例,但是需要从$ _SESSION ['somename'] ['auth']访问属性,但是在范围内,我在会话数组中的基数不正确。
添加属性很好$ this-> session-> add(“ key”,“ name”),但是如果您想追加到该数组(名称实际上是一个数组,而不仅仅是一个值),该怎么办,反之亦然。还是检查是否出现$ _SESSION ['somename'] ['auth'] ['key'] ['name']内是否确实存在另一个键或值?
在过去的几天里,所有这些工作我都可以肯定地说,编写“功能齐全的”会话管理器类并非并非不可能,但在一天结束时,为简单起见,最好还是使用该会话直接排列,因为它减少了代码,并且减少了问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句