[PHP] class인스턴스 생성 한번만 하기

항상 그렇지만.. 포스트의 제목을 정하는 것은 쉬운 일이 아니다. 이번엔 PHP class 에서 인스턴스 생성을 한번만 하게 하는 방법이다. 영어로는 singleton pattern 이라고도 하는 모양이다. 사이트 전체에서 사용되는 HTML 이라는 class를 생각할 때 작업자의 실수로 HTML class 가 여러 번 호출되게 되면 내부적으로 사용되는 변수의 값이 호출 될 때마다 초기화되기 때문에 의도했던 대로 작동하지 않을 수가 있다. 이럴 때는 인스턴스를 체크해서 한번만 생성되도록 해야만 한다.
<?php
class TEST
{
private static $instance = null;
public static function getInstance()
{
if (self::$instance === null)
self::$instance = new self();
return self::$instance;
}
private function __construct()
{
}
}
class 작성 때 위와 같이 처리하면 인스턴스를 한번만 생성할 수 있다. 그리고 TEST class 호출은 아래와 같이 한다.
<?php
$test = TEST::getInstance();