나는 일반적으로 정적이 아닌 일반 클래스를 작성하고 팩토리 클래스를 사용하여 객체의 단일 (sudo static) 인스턴스를 인스턴스화하는 것을 선호합니다.
이 방법으로 생성자와 소멸자가 정상적으로 작동하며 원하는 경우 추가 비 정적 인스턴스를 만들 수 있습니다 (예 : 두 번째 DB 연결)
나는 이것을 항상 사용하며 페이지가 종료되면 소멸자가 세션을 데이터베이스로 푸시하므로 사용자 지정 DB 저장소 세션 처리기를 만드는 데 특히 유용합니다.
또 다른 장점은 모든 것이 필요할 때 설정되므로 호출하는 순서를 무시할 수 있다는 것입니다.
class Factory {
static function &getDB ($construct_params = null)
{
static $instance;
if( ! is_object($instance) )
{
include_once("clsDB.php");
$instance = new clsDB($construct_params); // constructor will be called
}
return $instance;
}
}
DB 클래스 ...
class clsDB {
$regular_public_variables = "whatever";
function __construct($construct_params) {...}
function __destruct() {...}
function getvar() { return $this->regular_public_variables; }
}
당신이 그것을 사용하고자하는 곳은 그냥 전화 ...
$static_instance = &Factory::getDB($somekickoff);
그런 다음 모든 메소드를 정적이 아닌 것으로 취급하십시오.
echo $static_instance->getvar();