2016-06-01 5 views
-2

PHP를 통해 프레임 워크를 사용하지 않고 웹 응용 프로그램을 개발했습니다. 내 응용 프로그램에는 주로 두 가지 유형의 파일이 있습니다 - 프론트 엔드와 백엔드. 첫 번째 유형은 HTML, PHP, CSS, JavaScript (jQuery) 및 백엔드 - PHP 만 포함 할 수 있습니다. 나는 데이터베이스와의 연결과 하나의 클래스 사용자의 웹 세션 (PHP의 기능 session_start())를 생성 session하게 pg_db_connection을 하나 개의 클래스를 불러 "사용자 이름"과 같은 몇 가지 변수를 유지 한의 users 데이터베이스 테이블 등어떤 아키텍처 패턴을 사용하고 있습니까?

pg_db_connection에서 사용자의 ID 클래스는 에서 얻은 데이터베이스 자원 인 $link 속성을가집니다. 이 클래스에는 query($query, $b_result = false, &$affected_rows = null), insert($table, $values, $columns = null, &$affected_rows = null), begin(), commit(), rollback() 등과 같은 일부 기능이 있습니다. 모든 프론트 엔드 파일의 시작 부분에서 나는 유형 session의 객체를 생성 및 수행

$db = new pg_db_connection($db_config,$log_mng); 
$session = new session($db); 

#if the session is not active go to login.php frontend and force the user to login 
if(!$session->is_active()) 
{ 
    header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI'])); 
    exit; 
} 


# If session is active proceed below 
# Auto refresh the session 
$session->autoReresh(); 

# Check if the current user have privileges to access this frontend file (second param is file path, third - file name) 
if(!($session->passpermit($session->user_id(), $_SERVER['SERVER_ADDR'], dirname(__FILE__)."/", basename(__FILE__)))) 
{ 
    header("Location: /html/admin/access_denied.html"); 
    exit; 
} 

세션 클래스 저장소 user_id, username$_SESSION에서 더 많은. 웹 사용자가 액세스 할 수있는 권한이있는 파일은 데이터베이스에 저장되므로 데이터베이스에 연결해야합니다. 이 프론트 엔드 파일에 동적 데이터를로드하려면 jQuery의 post 또는 load 함수를 사용하고 하나의 백엔드 파일을 호출하십시오. 이 백엔드 파일에는 대부분 pg_db_connection이 포함되어 있습니다. 필요한 경우 일부 데이터베이스 쿼리를 실행합니다. HTML 태그로 래핑하거나 배열을 어떻게 든 포맷 한 다음 json_encode으로 포맷 한 다음 HTML 또는 JSON을 검색합니다. 프론트 엔드 파일. 그런 다음 jquery의로드 또는 포스트 콜백 메소드에서이 HTML이 필요한 곳에 쓰여지거나 JSON이 어떻게 든 HTML로 변형되고 HTML의 어딘가에 다시 작성됩니다.

알려진 아키텍처 패턴을 사용하고 있는지 궁금합니다. 또는 어떤 아키텍처 패턴이 설명 된 접근법에 가장 가깝습니까?

+0

정상적인 OOP처럼 보입니다. 특정 아키텍처 패턴을 볼 수 없습니다. StackOverflow에 대한 주제를 벗어나기 때문에 질문이 왜 떨어지고 있는지 궁금해하는 경우. 이러한 종류의 질문에는 [CodeReview] (http://codereview.stackexchange.com/)가 있습니다. – apokryfos

+0

@apokryfos 안녕하세요! 이 질문은 코드 검토에 대한 주제와 관련이 없으므로 코드 자체에 대한 속성 ("아키텍처 패턴")이 아닌 검토/개선을 요구하지 않기 때문입니다. 사용자를 가리 키기 전에 SE 사이트의 주제가 무엇인지 알아야합니다! – syb0rg

답변

1

귀하의 애플리케이션 아키텍처는 구체적으로 특정 아키텍처 패턴을 따르지 않습니다. 일반적으로 클라이언트 (프론트 엔드) - 서버 (백엔드) 아키텍처을 사용하고 JavaScript/Ajax 요청으로 프론트 엔드에서 데이터를 가져옵니다. 당신은 당신의 비즈니스 로직 코드의 구조를 지정하지 않은 사용 ... 그래서 당신은 등등 MVC 패턴을 사용 여부를 알 수있는 방법이 없다 ... 체크 아웃이 링크 더 많은 것을 배울 수 : https://softwareengineering.stackexchange.com/questions/158260/is-there-any-design-pattern-except-mvc-for-web

I을 또한 웹 응용 프로그램의 디자인 결정의 더 나은 이해를 얻기 위해이 쓰기까지를 읽어보실 것을 권장합니다

  • : Web Application Design Patterns

    이 링크의 목록에서를, 나는 다음과 같은 디자인 패턴을 사용하여 말할 것 요청 처리 : 페이지 컨트롤러 (분명히 당신이 인증 및 권한 부여를 제어 단일 항목 클래스가)

  • 프리젠 테이션 : 바로 당신을 가지고있는 경우, 서버의 주요 로직을 (발표자를 감독, 하지만 당신은 다음 프런트 엔드 자바 스크립트에 몇 가지 UI/JSON-내용 교체 작업 등)에 위임

  • 페이지 레이아웃 (UI) : 좌/두 단계보기 (당신은 JSON에서 jQuery를 함께 약간의 HTML을 생성 변환?)

  • 지속성 : 트랜잭션 데이터 저장소) (커밋, 롤백 (당신은 (시작 사용하기 때문에)()) 일부 비판

: pg_db_connection 당신이 사용해야하는 의미 포스트그레스 DB 같아요? ... 데이터베이스를 쉽게 전환 할 수 없으며 오류가 발생하기 쉽고 보안이 취약한 저급 SQL 쿼리를 처리해야합니다. 사용자 정의 세션 처리는 많은 핏 - 폭포 ... 예. 종료에 대해서 ...

header("Location: /html/admin/login.php?url=" . urlencode($_SERVER['REQUEST_URI'])) 

은 ... 리디렉션 - 취약점으로 이어질 수도 ... 그리고 난 당신이 login.php에서 무엇을하고 있는지 알고 싶어하지 않는다; 당신은 하위 최적) (왜 출구 여기 읽을 수 있습니다 : Best Practice for PHP exit()

어쨌든, 사람들이 실제로 처음부터 자신의 웹 애플리케이션 아키텍처를 작성하지 오히려 얻을 이유가 영감을별로 또는 사용 PHP는 프레임 워크 :

  • 가 잘 조직 제공 가능한 재사용 및 유지 보수 코드

    • 만들기 개발 속도는
    • 는 비켜 성장하자 프레임 워크에서 실행되는 웹 응용 프로그램 등의 연구 시간은 확장 성이 사이트
    • 프리젠 테이션의 분리 및 논리
    • 을 보장하여 MVC (Model-View-Controller) 패턴을 따라 낮은 수준의 보안에 대한 걱정에서 당신을
    • 예비 http://www.hongkiat.com/blog/best-php-frameworks/ (그게 또한 소스를 사전이 언급에 대해 : 같은 객체 지향 프로그래밍 도구

    체크 아웃이 블로그 게시물에 제시된 현재 현대 프레임 워크의 일부와 같은 현대적인 웹 개발 사례를 홍보

  • 에드 프레임 워크 사용 이유 ...) 너무 느리고 부풀어 오르지 않고 사용 사례에 적합 할 수도 있습니다 ...