/**
* 싱글톤 모드 구현 클래스 -->ArrayAccess(어레이 액세스) 인터페이스
*
* @author Flyer0126
* @since 2012 /4 /27
*/
클래스 싱글{
private $name;
private static $_Instance = null;
비공개 함수 __construct()
{
}
정적 함수 로드()
{
if(null == self::$_Instance)
{
self::$_Instance = new Single();
}
return self::$_Instance;
}
공용 함수 setName($name)
{
$this->name = $name;
}
공용 함수 getName()
{
return $this->name;
}
}
$s = 싱글::load();
$s->setName("jack");
echo $s->getName(); //jack
// 调整一下(继承ArrayAccess && 实现4个方法)
class Single은 ArrayAccess를 구현합니다
{
private $name;
private static $_Instance = null;
private 함수 __construct()
{
}
정적 함수 load()
{
if(null == self::$_Instance)
{
self::$_Instance = new Single();
}
return self::$ _Instance;
}
공개 함수 setName($name)
{
$this->name = $name ;
}
공개 함수 getName()
{
return $this->name;
}
/**
* 네 가지 메소드 구현
* offsetExists(), 요소가 정의되었는지 식별하는 데 사용
* offsetGet(), 요소의 값을 반환하는 데 사용
* offsetSet(), 요소의 새 값을 설정하는 데 사용됨
* offsetUnset(), 요소와 해당 값을 삭제하는 데 사용됨
**/
공개 함수 offsetSet($offset, $value)
{
if (is_null($offset))
{
$this->container[] = $value;
}
else
{
$this->container[$offset] = $value;
}
}
공개 함수 offsetGet($offset)
{
return isset($this->container[$offset]) ? $this->container[$offset] : null;
}
공용 함수 offsetExists($offset)
{
return isset($this->container[$offset]);
}
공개 함수 offsetUnset($offset)
{
unset($this->container[$offset]);
}
}
$s = 싱글::load();
$s->setName("jack");
$s ["이름"] = "마이크";
echo $s->getName(); //잭
echo $s["name"]; //마이크
print_r($s);
/**
단일 객체
(
[name:Single:private] => jack
[컨테이너] => 배열
(
[이름] => mike
)
)
**/