정교 한 구 조 를 만 드 는 PHP 프로그램

일찍부터 이 글 을 쓰 고 싶 었 지만 완성 할 시간 이 없 었 다.제 가 여러분 에 게 어떻게 하 는 지 알려 드 리 는 것 이 아니 라 본 고 는 하나의 도입부 로 서 여러분 과 효과 적 이 고 유연 한 인터넷 응용 프로그램 을 어떻게 구축 하 는 지 에 대해 토론 하고 싶 습 니 다.2-3 년 동안 인터넷 응용 프로그램 개발 을 통 해 제 개발 경험 이 더욱 생동감 이 생 겼 습 니 다.돌 이 켜 보면 제 가 예전 에 Geocrawler 를 위해 쓴 코드 가 제 것 이 라 고 믿 을 수 없습니다.GPL 의 원인 으로 인해 PHPBuilder 의 소스 코드 도 좋 은 사람과 나 쁜 사람 이 고 르 지 않다.최근 에 저 는 경험 이 있 는 PHP 개발 자로 서 SourceForge 를 써 주 고 있 습 니 다.이것 은 최종 결과 의 범 위 를 보 여 주 는 것 이 라 고 생각 합 니 다.좋 은 코드 는 여러 부분 으로 나 뉘 어야 합 니 다.적당 한 라 이브 러 리 와 함수 호출,명확 한 데이터 베이스 구조,사이트 의 모든 부분 과 다른 부분 은 상대 적 으로 독립 되 어야 합 니 다.하지만 이것 이 최선 은 아니다.만약 내 가 다시 할 수 있다 면,나 는 HTML 층 과 데이터 층 의 분리 에 더 많은 관심 을 가지 고 대상 과 명확 한 함수 라 이브 러 리 를 통 해 이 점 을 실현 할 것 이다.아름 다운 도형 을 나 는 매니저 들 이 아름 다운 도형 과 도표 로 그들 을 묘사 하 는 것 을 좋아 한 다 는 것 을 알 고 있다.이것 은 우리 에 게 가장 좋 은 인상 을 남 길 것 이다.하나의 구조 뒤에 숨겨 진 생각 으로 논리 와 외관 을 분리 할 수 있다.이것 은 모든 복잡 한 프로그램 이'API/Data Access Layer'로 표현 할 수 있다 는 것 을 의미한다.보안 검색,업 데 이 트 된 문장 등 을 HTML 층 에 두 기보 다 는 API 층 에 전체적으로 두 는 것 이 좋 습 니 다.이 HTML 층 은 간단 한 함수 호출 과 되 돌아 오 는 배열,대상 또는 자체 적 으로 정 해진 다른 무언 가,그리고 일부 데이터 뱅 크 의 검색 결과 의 집합 등 만 포함 되 어 있다.만약 당신 이 이렇게 한다 면,꼭대기 층 은 매우 작고,당신 은 편리 하 게 그것 을 만 들 고 유지 할 수 있 을 것 입 니 다.다음 과 같은 예 에서 이 HTML 인터페이스 에는 API 층 의 함수 만 직접 호출 되 고 일부 HTML 도구 라 이브 러 리(팝 업 상자 등 을 생 성 할 수 있 습 니 다)와 데이터베이스 추상 층 에서 호출 되 는 데이터 베이스 작업 방법(특별한 데이터 뱅 크 를 연결 할 필요 가 없습니다)만 있 습 니 다.
기본 적 이 고 유연 한 PHP 프로그램 구조의 가장 기본 적 인 부분 은 다음 과 같은 몇 가지 가 있 습 니 다.데이터 베이스 무관 성 인터페이스 무관 성 이식 가능 대상 또는 적어도 함수 라 이브 러 리 로 구성 되 어야 합 니 다.또 다른 것 이 있 습 니까?물론 다른 것 도 있 지만,나 는 그것 이 너무 크다 고 생각한다.아마도 네가 스스로 그것들 을 지적 할 수 있 을 것 이다.그것들 하나하나 에 대해 자세히 이야기 합 시다.1.데이터 베 이 스 는 무관 합 니 다.사이트 가 어디서 실 행 될 지 모 릅 니 다.물론 이 를 만 들 때 큰 데이터 와 높 은 데이터 가 있 기 를 바 랍 니 다.그래서 당신 은 MS Access 나 다른 가 벼 운 데이터베이스 시스템 에 자신 을 구속 하고 싶 지 않 습 니 다.다양한 데이터 베이스 시스템 을 즉각 삽입 할 수 는 없 지만 중간 에 편리 하 게 전환 할 수 있 습 니 다.너 는 너의 데이터 베 이 스 를 추상 화 할 수 있 는 다른 선택 이 있다.PHP 에서 하나의 특이 한 방법 은 서로 다른 데이터베이스 시스템 에 서로 다른 코드 를 써 야 한 다 는 것 이다.왜냐하면 PHP 에서 서로 다른 데이터베이스 에 대한 접근 함수 가 다 르 기 때문이다.이 점 을 피하 기 위해 서 는 PHPLib,다음 버 전의 PEAR,그리고 우리 가 SourceForge 에서 설명 한 것 처럼 추상 적 인 데이터베이스 접근 층 을 사용 할 수 있 습 니 다.2.인터페이스 와 무관 한 응용 프로그램 이 기술 이 더 중요 합 니까?아니면 운영 하 는 사이트 가 더 중요 합 니까?우 리 는 결코 진정 으로 알 수 없다.나 는 지금까지 이 점 을 믿 지 않 았 다.-HTML 은 표준 이다.특히 한 인터넷 응용 프로그램 에 있어 인터페이스 가 바 뀌 었 다 는 것 은 우리 가 항상 다시 써 야 한 다 는 것 을 의미한다.그러나 응용 프로그램 이 매우 복잡 하 다 면 데이터 베 이 스 를 위해 다른 인 터 페 이 스 를 만들어 야 합 니 다.사이트 프로그램 에서 copy&paste 의 방문 검사 등 코드 를 여기저기 다 니 고 싶 지 않 으 면.이것 은 또한 프로그램 을 정확하게 설계 했다 면 웹 사 이 트 를 쉽게 바 꾸 어 WAP 에 적응 시 킬 수 있 습 니 다.작은 WAP 인터페이스 를 간단하게 쓰 고 데이터베이스 접근 대상 을 호출 할 수 있 을 뿐 입 니 다.그러나 프로그램 을 잘 설계 하지 않 았 다 면 HTML 버 전 을 WAP 버 전 으로 바 꾸 는 것 은 복잡 한 프로젝트 입 니 다.저 는 이 생각 도 SourceForge 에 가 져 왔 습 니 다.저 희 는 커 다란 사용자 군 이 있 습 니 다.저 희 를 위해 bugs,작업 등 을 보 내 거나 받 습 니 다.우선,우 리 는 이 모든 것 이 우리 의 웹 페이지 인 터 페 이 스 를 통과 할 것 이 라 고 지적 한 다음 에 Eric Raymond 와 다른 사람들 이 주 는 압력 으로 인해 우 리 는 XML 로 데이터 뱅 크 의 외부 인 터 페 이 스 를 만 들 기로 결정 했다.다행히 우 리 는 4 월 에 프로그램의 핵심 논리 코드 를 인터페이스 와 분리 한 적 이 있다.나 는 우리 가 어떻게 했 는 지,너의 일 에 도움 이 되 기 를 바란다.이 SourceForge 의 bugs 추적 기와 다른 도구 들 은 두 개의 라 이브 러 리 로 나 뉘 어 져 있 습 니 다.이 HTML 라 이브 러 리 와 데이터 액세스 라 이브 러 리 입 니 다.이 데이터 액세스 라 이브 러 리 는 입력 한 값 의 정확성 을 검사 하고 보안 검 사 를 처리 하 며 성공/실패 시 TRUE 나 FALSE 로 돌아 갑 니 다.간단 한 원인 으로 인해 이 예 는 완벽 한 대상 모델 을 바탕 으로 하지 않 았 다.그러면 나 는 이 기본 유형 과 그의 파생 유형 등 을 설명 해 야 한다.나 는 이 예 가 너 에 게 가장 일반적인 생각 을 줄 것 이 라 고 생각한다.
HTML 라 이브 러 리 의 예//connect to database require("database.php");/common utils like header/footer HTML require ("html.php"); //data access library require ("bug_data.php"); echo site_header("Page Title"); echo "
Updating A Bug
 
"; if (bug_data_update($field1,$field2,$field3)) { echo "
Update Failed!
"; } else { echo "
Updated Bug Successfully
"; //echo the global error string echo $feedback; } echo site_footer(); ?> Data 액세스 라 이브 러 리 의 예 3.이식 성 은 의심의 여지 가 없습니다.코드 를 고정된 사이트 에 만 사용 하고 싶 지 않 습 니 다.앞으로 우 리 는 색채 의 선택,요소 의 이름,글꼴 또는 다른 무언 가 를 바 꿀 수 있 습 니 다.그러면 config 파일 을 설정 해 야 합 니 다.여러 페이지 에 포함 되 어 있 습 니 다.더 좋 은 관점 은 사이트 가 모듈 화 되 었 다 는 것 입 니 다.copy&paste 는 HTML 파일 이 필요 하지 않 습 니 다.저 는 이 를 함수 에 넣 고 필요 한 곳 에서 호출 하 는 경향 이 있 습 니 다.같은 방법 으로 데이터베이스 의 비밀번호,데이터베이스 연결 문자열 등에 사용 할 수 있 으 며,이것들 은 데이터베이스 처리 의 추상 적 인 층 에 넣 을 수 있다.4.대상/함수 화 우 리 는 COBOL 로 개발 한 것 이 아니 므 로 프로 세 스 를 여러 함수 로 나 눌 수 있 음 을 의미 합 니 다.모든 호출 은 하나의 자동 적 인 행동 이 며,때로는 단지 한 단락 의 다른 함 수 를 호출 하여 이 결 과 를 되 돌려 줍 니 다.좋 은 예 는 모든 페이지 에서 사용자 가 로그 인 했 는 지 확인 하 는 것 입 니 다.쿠키 나 데이터 베 이 스 를 조회 하여 이 기능 을 완성 할 수 있 습 니 다.그러나 인증 시스템 을 바 꾸 려 면 모든 페이지 를 바 꿔 야 합 니 다.사실은 함수 창고 의 일반적인 함 수 를 바 꾸 면 이 변동 을 완성 할 수 있 을 것 입 니 다.언제든지 코드 를 써 라.코드 가 한 곳 이상 사용 된다 면,그것 을 창고 에 넣 는 것 을 고려 해 야 한다.다른 거 또 뭐 있어 요?분명히 내 가 말 하지 못 한 일이 많 을 것 이다.나 에 게 너의 생각 을 말 해라.나 는 다음 글 에서 그것들 을 토론 할 것 이다.특히,만약 당신 이 대형,복잡 한 응용 프로그램 을 썼 다 면,나 는 당신 이 그것 을 어떻게 계획 하고 다시 할 때 다른 생각 이 없 는 지 듣 고 싶 습 니 다.

좋은 웹페이지 즐겨찾기