공장 모델 이 Zend Framework 에서 응용 소개

먼저,우 리 는 먼저 개념 을 인용 합 니 다.공장 모델:다른 종류의 인 스 턴 스 를 만 드 는 것 을 전문 적 으로 정의 합 니 다.만 든 인 스 턴 스 는 보통 같은 부모 클래스 를 가지 고 있 습 니 다.공장 모델 은 클래스 의 생 성 모델 에 속 하 며,일반적으로 독립 변수 에 따라 서로 다른 인 스 턴 스 를 되 돌려 줍 니 다.공장 모델 의 실질 은 한 공장 류 가 들 어 오 는 파 라 메 트릭 에 따라 어떤 제품 의 인 스 턴 스 를 만들어 야 할 지 동태 적 으로 결정 하 는 것 이다.공장 모델 식 은 공장 역할,추상 적 인 제품 역할 과 구체 적 인 제품 역할 과 관련된다.공장(Creator)역할:공장 모델 의 핵심 으로 모든 인 스 턴 스 를 만 드 는 내부 순찰 을 책임 집 니 다.공장 류 는 외부 에서 직접 호출 되 어 필요 한 제품 대상 을 만 들 수 있다.추상 적 인 제품(Product)역할:공장 모델 이 만 든 모든 대상 의 부모 클래스 로 모든 인 스 턴 스 가 공유 하 는 공공 인 터 페 이 스 를 설명 합 니 다.구체 적 인 제품(Concrete Product)역할:공장 모델 의 구축 목표 이 고 모든 대상 은 이 역할 을 하 는 구체 적 인 사례 입 니 다.ZF 의 zenddb 는 공장 모델 의 좋 은 예 이다.이제 분석 을 시작 하 겠 습 니 다.zf 를 설정 할 때,우 리 는 데이터베이스 연결 작업 정 보 를 Bootstrap.php 파일 에 넣 을 수 있 습 니 다
 
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
function __construct($app){
parent::__construct($app);
$url=constant('APPLICATION_PATH').DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'config.ini';
$dbconfig=new Zend_Config_Ini($url,null,true);
$db=Zend_Db::factory($dbconfig->general->db->adapter,$dbconfig->general->db->params->toArray());
// var_dump($db);
$db->query('SET NAMES UTF8');
Zend_Db_Table::setDefaultAdapter($db);
}
}
?>
입구 파일 에서 Zend응용 프로그램 대상 이 boottstrap()을 호출 하면 클래스 Bootstrap 의 구조 함수 가 호출 됩 니 다.구조 함수 에서 Zend 를 통 해Db:factory()우 리 는 데이터 베 이 스 를 조작 하 는 대상 인 스 턴 스 를 얻 을 수 있 습 니 다.하나의 ZendConfig_Ini 실례 읽 기 config.ini 에서 관련 정 보 를 매개 변수 로 공장 함수 ZendDb::factory()config.ini 의 정보[geneal]db.adapter=PDOMYSQL db.params.host=localhost db.params.username=root db.params.password=db.params.dbname=데이터베이스 이름 ZendDb:factory()의 매개 변 수 는 다음 과 같 습 니 다.예 를 들 어 PDOMYSQL 매개 변수 2:데이터 베 이 스 를 연결 하 는 정 보 를 표시 합 니 다.서버 이름,사용자 이름,비밀 번 호 를 포함 하여 연결 할 데이터 베 이 스 는 두 가지 질문 을 던 집 니 다.① 우리 가 조작 할 데이터 베 이 스 는 MSSQL 이 라면 어떻게 조작 해 야 합 니까 ② 여기 서 우리 가 사용 하 는 것 은 Zend 입 니 다.Db::factory(),우리 가 전통 적 인 방식 을 사용한다 면 어떻게 대답 해 야 합 니까?① 우 리 는 config.ini 파일 에서 PDO 만 사용 해 야 합 니 다.MYSQL 을 PDO 로 수정MSSQL ② 전통 적 인 방식 으로 데이터 베 이 스 를 조작 하 는 대상 인 스 턴 스 를 만 들 수 있 습 니 다:$db=new ZendDb_Adapter_Pdo_Mysql($config)에서:$config 정 보 는 config.ini 에서 문 제 를 읽 습 니 다.우 리 는 전통 적 인 방식 으로 대상 인 스 턴 스 를 만 들 면 현재 작업 할 데이터 베 이 스 를 판단 하 는 절차 가 있 을 것 입 니 다.예 를 들 어
 
switch ($dbType){
case 'PDO_MYSQL':
....
case 'PDO_MSSQL':
....
case 'PDO_SQLITE':
....
}
우 리 는 서로 다른 데이터 베이스 유형 에 따라 서로 다른 데이터 베 이 스 를 조작 하 는 문 구 를 써 야 한다.그러면 귀 찮 지 않 겠 지만 이 모든 것 을 zf 는 공장 모델 을 통 해 우 리 를 도와 주 었 다.사용 하기에 매우 편리 하 다.Zf 에서 어떻게 공장 모델 을 실현 하 는 지?우선,추상 적 인 기류 가 있어 야 한다:ZendDb_Adapter_Abstract,이 종 류 는 공장 모델 이 만 든 모든 대상 의 부모 클래스 입 니 다.그 는 모든 인 스 턴 스 가 공유 할 인 터 페 이 스 를 제공 하 는 것 을 책임 집 니 다.이 종 류 는 우리 가 데이터 베 이 스 를 조작 하 는 데 매우 익숙 한 실현 방법 을 제공 할 뿐만 아니 라,예 를 들 어 select,update,insert,delete,query,fetch Row,fetch Assoc 등 이다.또한 일부 인 터 페 이 스 를 제공 하여 하위 클래스 에서 이 루어 집 니 다.예 를 들 어 limit,getServerVersion,closeConnection,descributeTable 등
 
abstract class Zend_Db_Adapter_Abstract
{
//..
}
abstract class Zend_Db_Adapter_Pdo_Abstract extends Zend_Db_Adapter_Abstract
{
//..
}
class Zend_Db_Adapter_Pdo_Mysql extends Zend_Db_Adapter_Pdo_Abstract
{
//... Mysql
}
class Zend_Db_Adapter_Pdo_Mssql extends Zend_Db_Adapter_Pdo_Abstract
{
//.... Mssql
}
class Zend_Db_Adapter_Pdo_Sqlite extends Zend_Db_Adapter_Pdo_Abstract
{
//.... Sqlite
}
이상 의 관 계 는 그림 으로 간단하게 표시 할 수 있 습 니 다.
이어서 우 리 는 Zend 를 추적 했다.Db:Factory()는 도대체 서로 다른 매개 변수 에 따라 서로 다른 데이터 베 이 스 를 선택 하 는 것 을 실현 합 니 다.

좋은 웹페이지 즐겨찾기