오늘 저는 싱글톤을 사용하기 위해 PHP를 사용하려고 생각 중이었고 비교적 포괄적인 요약을 보았습니다. 즉, PHP5의 구현이 여기에 요약되어 있습니다:
PLAIN TEXTPHP:
class MyClass.
{
개인 정적 $instance;
공개 정적 함수 싱글턴()
{
if (!isset(self::$instance)) {
$c = __클래스__;
self::$instance = 새로운 $c;
}
self::$instance를 반환합니다.
}
}
이 코드는 일반적으로 MyClass에서 상속되고 $c = __CLASS__; 항상 사용할 수 없는 기본 클래스의 클래스 이름을 가져오기 때문에 사용하기가 매우 불편합니다. 다른 구현 방법을 찾는 것만 고려할 수 있습니다.
그런 다음 기사의 함수 메소드에 구현된 싱글톤을 살펴보기 시작했습니다. 단점은 클래스를 매개변수로 인스턴스화할 수 없다는 것입니다.
PLAIN TEXTPHP:
function getObj() {
정적 $obj = 배열();
$args = func_get_args();
if(빈($args))
null을 반환;
$clazz = $args[0];
if(!is_object($obj[$clazz])) {
$cnt = 개수($args);
if($cnt> 1) {
for($i = 1, $s = ''; $i <$cnt; $i++)
$s[] = '$args[' . $i .
eval('$obj[$clazz] = new $clazz(' . Join(',', $s) . ');');
} 또 다른 {
$obj[$clazz] = 새로운 $clazz;
}
}
$obj[$clazz]를 반환합니다.
}
php5에서 쉽게 호출할 수 있습니다:
일반 TEXTPHP:
getObj('MyClass', $param1, $param2)->myMethod()
;
모나드 모드의 간단한 구현(SINGLETON)