我的$_SESSION
数组有一个包装类,因为我喜欢使用对象,它可以防止我变得懒惰并从我不应该的地方调用超级全局。
过去可以有一个简单的:
public function get($name);
public function set($name, $value);
public function exists($name);
......
但是现在我正在实施一项购物服务,它有一个购物车,当用户将商品添加到购物车时,它会将其设置为$_SESSION['cart'][$productId]
持有数量的商品,以便您可以看到我的商品get()
并set()
分解。
我目前有这个用于我的新 get()
/*
* @args: ...
* @return: mixed
*/
public function get() {
$keys = func_get_args();
$value = $_SESSION[array_shift($keys)];
foreach( $keys as $key ) {
$value = $value[$key];
}
return $value;
}
// This is how I use it then
$quantity = $session->get('cart', $productId);
它可以完美地假设正在搜索的键确实存在,否则它会给我一个警告。
现在的问题是 set() 方法。我想以类似的方式执行此操作,因此可以在方法的签名中给出任意数量的密钥,然后给出要存储的值,但事实证明无论如何这对我来说非常混乱。
有谁知道如何做到这一点?
谢谢。