공장 모델 이 Zend Framework 에서 응용 소개
<?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()는 도대체 서로 다른 매개 변수 에 따라 서로 다른 데이터 베 이 스 를 선택 하 는 것 을 실현 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 공장 모드, 추상적인 공장 모드를 쉽게 파악예를 들어 우리는 새로운 대상을 만드는 실현 세부 사항을 주의하고 필요한 매개 변수를 초기화해야 한다.이렇게 하면 우리는 프로그램 논리의 실현이 아니라 대상의 창설에 더 많은 신경을 쓰게 되고 우리의 프로그램 개발 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.