<?php
/**
* 虽然面向对象编程的思想抵制使用全局变量
* 但是全局变量在某些情况下利大于弊
* 为何非要局限于一些不存在的限制,适合的才是最好的。
*
* 下面介绍两种可供全局使用的数据存储模式
* 注册表模式和会话级注册表模式
*
*/
/**
* 基于键值对的全局唯一注册表
*/
class Register {
private static $instance;
private $values = array();
public static function instance() {
if (!isset(self::$instance)) {
self::$instance = new self;
}
return self::$instance;
}
public function get($key) {
if (isset($this->values[$key]))
return $this->values[$key];
return FALSE;
}
public function set($key, $val) {
$this->values[$key] = $val;
}
}
/**
* 会话级别的注册表
* 本质是将会话数据存入session
*/
class Register2 {
private static $instance;
private $values = array();
public static function instance() {
if (!isset(self::$instance)) {
self::$instance = new self;
}
return self::$instance;
}
public function get($key) {
if (isset($_SESSION[__CLASS__][$key]))
return $_SESSION[__CLASS__][$key];
return FALSE;
}
public function set($key, $val) {
$_SESSION[__CLASS__][$key][$key] = $val;
}
}