닭 갈비 의 PHP 단일 모드 응용 상세 설명

4238 단어 php단일 모드
단일 모드 의 요점 은 세 가지 가 있 습 니 다.하 나 는 특정한 클래스 에 하나의 인 스 턴 스 만 있 을 수 있 습 니 다.둘째,이 인 스 턴 스 를 자체 적 으로 만들어 야 합 니 다.셋째,그것 은 반드시 스스로 전체 시스템 에 이 인 스 턴 스 를 제공 해 야 한다.4567913)장점:단일 모드 는 대량의 new 작업 을 피 할 수 있 습 니 다.매번 new 작업 은 메모리 자원 과 시스템 자원 의 단점 을 소모 하기 때 문 입 니 다.PHP 에서 모든 변 수 는 전체 변수 든 클래스 의 정적 구성원 이 든 페이지 급 입 니 다.페이지 가 실 행 될 때마다 새로운 대상 을 다시 만 들 고 페이지 가 실 행 된 후에 비 워 집 니 다.이렇게 하면 PHP 단일 모드 는 아무런 의미 가 없 는 것 같 습 니 다.그래서 PHP 단일 모드 는 단일 페이지 급 요청 시 여러 개의 응용 장면 이 나타 나 고 같은 대상 자원 을 공유 해 야 할 때 매우 의미 가 있다 고 생각 합 니 다.Whyc 는 왜 PHP 단일 모드 를 사용 합 니까?PHP 의 주요 응용 장 소 는 응용 프로그램 이 데이터베이스 와 접촉 하 는 응용 장면 이기 때문에 하나의 응용 프로그램 에 대량의 데이터베이스 조작 이 존재 한다.예 를 들 어 데이터베이스 핸들 을 통 해 데이터 베 이 스 를 연결 하 는 행위 이다.단일 모드 를 사용 하면 대량의 new 조작 을 피 할 수 있 고 매번 new 작업 이 메모리 자원 과 시스템 자원 을 소모 하기 때문이다.코드 세 션 을 보 여 주 는 추상 적 인 부분 이 있 습 니 다.전통 적 인 인 인 코딩

<?php
/* , :
*
* 1. $_instance
* 2. , new
* 3. getInstance() ,
* 4. ::
* 5. PHP , PHP PHP , 。
* ,PHP 。 PHP , , ,
* , , , Singleton 。
* , , ,
* new ( : new ) , PHP
*
*/
class People
{
static private $_instance = NULL;
public $height = '';
public $age = '';
private function __construct()
{
$this->height = '185';
$this->age = 25;
}
private function __clone()
{
//do something
}
static public function getInstance()
{
if(!self::$_instance instanceof self)
{
//echo 'lgh-big';
self::$_instance = new self;
}
else
{
//for testing only
//echo 'gdc-xiaoairener';
}
return self::$_instance;
}
public function getHeight()
{
echo $this->height;
}
public function getAge()
{
echo $this->age;
}
}
function testInstance()
{
People::getInstance()->getAge();
}
//begin to use the class
$lgh = People::getInstance();
$lgh->getHeight();
echo '<br />';
testInstance();
?>
을 사용 하여 단일 모드 인 코딩

<?php
......
//
$db = new DB(...);
// :
$db->addUserInfo();
......
// , , ,
......
function test(){
 ......
// , , ?!
 $db = new DB(...);
 $db->getUserInfo();
 ......
// , , global ? ,global , , OOP , , global , , ,
 global $db;  //OOP ,
......
}
HowC 는 어떻게 PHP 단일 모드 를 작성 합 니까?단일 모드 의 응용 장면 을 알 게 된 후에 우 리 는 단일 모드 의 구체 적 인 실현 코드 를 작성 하여 PHP 단일 모드 의 핵심 포 인 트 를 파악 합 니 다.코드 는 다음 과 같 습 니 다.

<?php
......
// , , ,
// , :)
DB::getInstance()->addUserInfo();
DB::getInstance()->getUserInfo();
......
상기 코드 에서 우 리 는 PHP 단일 모드 가 실현 하 는 핵심 포 인 트 는 다음 세 가지 와 같 습 니 다.1.저장 류 의 유일한 인 스 턴 스 정적 구성원 변수(보통$)가 필요 합 니 다.instance 개인 변수)2.구조 함수 와 복제 함 수 는 개인 으로 밝 혀 야 합 니 다.이것 은 외부 프로그램 new 류 가 단일 모드 의 의 미 를 잃 는 것 을 방지 하기 위해 서 입 니 다.3.이 인 스 턴 스 를 방문 하 는 공공 정적 방법(보통 getInstance 방법)을 제공 하여 유일한 인 스 턴 스 를 참조 하 는 PHP 단일 모드 의 단점 을 되 돌려 야 합 니 다.PHP 언어 는 해석 형 스 크 립 트 언어 입 니 다.이 운영 체 제 는 모든 PHP 페이지 가 해석 되 고 실 행 된 후에 모든 관련 자원 을 회수 합 니 다.즉,PHP 는 언어 단계 에서 특정한 대상 을 메모리 에 상주 시 킬 방법 이 없다.이것 은 asp.net,자바 등 컴 파일 형 과 다르다.예 를 들 어 자바 에서 단일 사례 는 전체 응용 프로그램의 생명 주기 에 존재 하고 변 수 는 크로스 페이지 급 이 므 로 이 인 스 턴 스 가 응용 프로그램의 생명 주기 에서 유일 하 게 할 수 있다.그러나 PHP 에서 모든 변 수 는 전역 변수 든 클래스 의 정적 구성원 이 든 페이지 급 입 니 다.페이지 가 실 행 될 때마다 새로운 대상 을 다시 만 들 고 페이지 가 실 행 된 후에 비 워 집 니 다.그러면 PHP 단일 모드 는 의미 가 없 는 것 같 습 니 다.그래서 PHP 단일 모드 는 단일 페이지 급 요청 시 여러 개의 응용 장면 이 나타 나 고 같은 대상 자원 을 공유 해 야 할 때 매우 의미 가 있다 고 생각 합 니 다.

좋은 웹페이지 즐겨찾기