이 글은 주로 PHP 싱글턴 모드의 정의와 사용법을 소개하며, 구체적인 데이터베이스 연산클래스 형식을 바탕으로 PHP 싱글턴 모드의 기능, 정의, 사용 방법 및 관련 주의사항을 자세히 분석합니다. . 다음
이 문서의 예제에서는 PHP 싱글톤 패턴의 정의와 사용을 설명합니다. 참조를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
싱글톤 모드는 책임 모드라고도 합니다. 이는 프로그램에서 단일 함수 액세스 지점을 만드는 데 사용됩니다.
모든 싱글턴 패턴에는 최소한 다음 세 가지 공통 요소가 있습니다.
1. 생성자가 있어야 하며 비공개로 표시되어야 합니다.
2. 클래스의 인스턴스를 보유하는 정적 멤버 변수가 있습니다. 이 인스턴스의 공개 정적 메서드
싱글톤 클래스는 다른 클래스에서 직접 인스턴스화할 수 없으며 자체적으로만 인스턴스화할 수 있습니다. 인스턴스의 복사본을 생성하지 않지만 싱글톤 클래스에 내부적으로 저장된 인스턴스에 대한 참조를 반환합니다.
class DB{ private $_link; // 保持单例类的静态变量 static $_instance; // 私有的构造函数 private function construct(){ $this->_link = @mysqli_connect(HOST, USER, PASSWORD, DATABASE); if(! ($this->_link)){ echo 'Something wrong occurs on the database connection!'; } } // 防止单例类被克隆 private function clone(){} // 外界访问单例类实例的接口 public static function getInstance(){ if(! (self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } }PS: 위에 정의된 clone() 함수는 싱글톤 클래스 객체가 복제되는 것을 방지합니다. 다음도 참조용 데이터베이스 작업 클래스의 간단한 싱글톤입니다.
class DB { /** * the database connection * @var resource * @access private */ private $_link; /** * the static instance of single db * @var object * @access static */ static $_instance; /** * construct the single object * @return null * @access private */ private function construct(){ $this->_link = @mysqli_connect(HOST, USER, PASSWORD, DATABASE); if(! ($this->_link)){ echo 'Something wrong occurs on the database connection!'; } } /** * empty clone * @return null * @access private */ private function clone(){} /** * for other object to get the instance of db * @return self::instance * @access public */ public static function getInstance(){ if(! (self::$_instance instanceof self)){ self::$_instance = new self(); } return self::$_instance; } /** * query * @param sql string * @param message string * @return resource * @access public */ public function query($sql,$message){ $result = @mysqli_query($this->$_link, $sql) or die($message . mysqli_error($this->$_link)); return $result; } /** * mysqli_num_rows * @param result resource * @return int * @access public */ public function num($result){ return @mysqli_num_rows($result); } /** * mysqli_fetch_array * @param result resource * @return array * @access public */ public function fetchArr($result){ return @mysqli_fetch_array($result); } /** * mysqli_insert_id * @return int * @access public */ public function last_id(){ return @mysqli_insert_id($this->_link); } /** * close the database connection * @param result resource * @return null * @access public */ public function close(){ @mysqli_close($this->_link); } /** * fetch once result from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchArrOnce($sql, $message){ $result = $this->query($sql, $message); $row = $this->fetchArr($result); return $row; } /** * fetch all results from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchArrMore($sql, $message){ $result = $this->query($sql, $message); $moreRow = array(); while($row = $this->fetchArr($result)){ $moreRow[] = $row; } return $moreRow; } /** * fetch the number of results from the specific sql query * @param sql string * @param message string * @return array * @access public */ public function fetchNum($sql, $message){ $result = $this->query($sql, $message); $resultNum = $this->num($result); return $resultNum; } /** * mysqli_prepare * @param sql string * @return stmt object * @access public */ public function prepare($sql){ return @mysqli_prepare($this->_link, $sql); } /** * mysqli_stmt_execute * @param stmt object * @param message string * @return bool * @access public */ public function stmt_execute($stmt, $message){ @mysqli_stmt_execute($stmt) or die($message . mysqli_error($this->_link)); } }용도:
define("HOST", "localhost"); define("USER", "root"); define("PASSWORD", ""); define("DATABASE", "eee"); $db = DB::getInstance();
위 내용은 PHP 싱글턴 패턴의 정의와 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!